73 lines
2.4 KiB
Ruby
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
|