2013-08-06 75 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