javaeye3/script/interview2essence.rb

73 lines
2.4 KiB
Ruby

#!/usr/bin/env ruby
ENV['RAILS_ENV'] = 'production'
require File.dirname(__FILE__) + '/../config/environment'
log = Logger.new(File.dirname(__FILE__) + "/../log/interview2essence.log")
group_domain = (Rails.env == 'production' ? 'interview' : 'test')
group = Group.find_by_domain group_domain
interviews = group.pages #删除状态的未选中
admin = Administrator.find_by_name 'inosin'
whole_category = WholeCategory.find 6
EssenceObserver.send(:remove_method, :after_create, :before_create)
interviews.each do |interview|
essence = Essence.new
%w{title body bbcode view_count created_at updated_at}.each do |field|
essence.send("#{field}=", interview.send(field))
end
essence.slug_url = interview.name if /^[a-zA-Z0-9\-_]+$/ =~ interview.name
essence.user = interview.updated_by if interview.updated_by
essence.user ||= interview.created_by if interview.created_by
essence.referer_url = interview.original_url
essence.referer_site = interview.original_author #原文地址转换成来源
essence.whole_category = whole_category #临时指定一个全站分类,需要再手动编辑一次
essence.status = 'approved'
essence.checked_at =Time.now
essence.essence_type = Essence.type_index 'interview'
essence.admin = admin #手动指定为admin
cards = interview.cards
if cards.size > 1
cards = cards[1..cards.size]
cards.each do |card|
essence_card = EssenceCard.new
%w{title body bbcode position created_by_id updated_by_id created_at updated_at}.each do |field|
essence_card.send("#{field}=", card.send(field))
end
essence.cards << essence_card
end
end
comments = interview.comments
if comments.size > 0
comments.each do |comment|
essence_comment = EssenceComment.new
%w{user_id body ip created_at}.each do |field|
essence_comment.send("#{field}=", comment.send(field))
end
essence.comments << essence_comment
end
end
begin
Essence.transaction do
essence.save!
if interview.attach?
interview.attachments.each do |atta|
a = Attachment.new(atta.attributes)
a.attach_to_id = essence.id
a.attach_type = Essence.class_name
a.save!
end
essence.update_attribute(:attach, true)
end
end
rescue Exception => e
log.error "move fail -- page_id: #{interview.id}"
else
log.info "move success -- essence_id: #{essence.id}, page_id: #{interview.id}"
end
end