2012-01-15 47 views
5

只是想知道是否有辦法在Rails中進行條件回調。我知道你可以做一個有條件的驗證,像這樣:Rails模型中的條件回調?

validates_uniqueness_of :email, :if => (1==1) 

我經常做這樣的事情在我的回調:

class LineItem < ActiveRecord::Base 
    belongs_to :invoice 
    belongs_to :line_item_group 

    before_create :set_invoice_id 
    def set_invoice_id 
    unless self.invoice_id 
     self.invoice_id = self.line_item_group.invoice_id 
    end 
    end 
end 

這將是巨大的,清理一下了一點。

回答

10
class LineItem < ActiveRecord::Base 
    before_create :set_invoice_id, :unless => :invoice_id 

    def set_invoice_id 
    self.invoice_id = line_item_group.invoice_id 
    end 
end 
+0

你是對的,它不是正統的SQL,我喜歡這種方式。 :)我願意爲較少的聯合而犧牲正常性。 – tybro0103 2012-01-16 01:45:12