只是想知道是否有办法在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
将它清理干净会很棒。
答案 0 :(得分:12)
是的,你可以。
class Order < ActiveRecord::Base
before_save :normalize_card_number, :if => :paid_with_card?
end
有关此主题的更多信息,请参阅http://guides.rubyonrails.org/active_record_callbacks.html#conditional-callbacks。
答案 1 :(得分: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