Rails将列迁移到关联

时间:2013-08-06 22:21:04

标签: ruby-on-rails postgresql migration relationship

我有一个带有postgres db的rails应用程序。我开始使用rails模型Ticket来跟踪故障单可以访问的事件,但是可以同时购买多个故障单。所以现在我有了这个:

Ticket
    belongs_to :purchase

Event
    belongs_to :purchase

Purchase
    has_many :tickets
    has_many :events

我想在故障单没有购买的地方使用迁移,创建购买并将其ticket_id设置为故障单,将其event_id设置为故障单的event_id,将故障单的event_id设置为nil,然后从中删除event_id票。

关于如何处理这个问题的想法?

1 个答案:

答案 0 :(得分: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%遵循您的应用程序的逻辑,但希望这会让您朝着正确的方向前进。