2013-08-06 34 views
0

我有一个带有postgres数据库的rails应用程序。我开始使用轨道模型票证来跟踪票证可以访问的事件,但是可以一次购买多张票据。所以,现在我有这个:Rails将列迁移到关联

Ticket 
    belongs_to :purchase 

Event 
    belongs_to :purchase 

Purchase 
    has_many :tickets 
    has_many :events 

我想使用移民只要一票没有购买,创建采购及其TICKET_ID设置售票,设置它的事项标识售票的事项标识,设置票证的event_id为零,然后从票证中删除event_id。

有关如何解决这个问题的想法?

+0

当您创建票证时,此类逻辑可以进入您的控制器。 – Huy

+0

好的,这很有道理,但我现在的门票怎么办? – nothappybob

+0

您可以运行一个耙子(这几乎是一个脚本),它将更新您的现有工单以符合您的要求。当然,你必须写这个脚本。 – Huy

回答

0

这里是如何产生的Rails rake任务:http://railsguides.net/2012/03/14/how-to-generate-rake-task/

你的rake任务更新历史记录应该是这个样子:

# lib/tasks/something.rake 
desc "Update old stuff" 
task :my_task1 => :environment do 
    tickets = Ticket.where("purchase_id IS NULL") 
    tickets.each do |ticket| 
    ticket.purchase.create!([attributes]) 
    ...[more stuff]... 
    end 
end 

像命令运行rake任务:

$ bundle exec rake my_task1 

我没有能够按照你的应用程序的逻辑100%,但希望这会让你在正确的方向。

+0

这将符合我的需求。谢谢。 – nothappybob