Rails模型中的条件回调?

tyb*_*103 6 ruby activerecord conditional ruby-on-rails callback

只是想知道是否有办法在Rails中进行条件回调.我知道你可以像这样进行条件验证:

validates_uniqueness_of :email, :if => (1==1)
Run Code Online (Sandbox Code Playgroud)

我经常在回调中做这样的事情:

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
Run Code Online (Sandbox Code Playgroud)

把它清理干净会很棒.

kso*_*sol 12

是的你可以.

class Order < ActiveRecord::Base
  before_save :normalize_card_number, :if => :paid_with_card?
end
Run Code Online (Sandbox Code Playgroud)

有关此主题的更多信息,请参见http://guides.rubyonrails.org/active_record_callbacks.html#conditional-callbacks.


tok*_*and 12

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
Run Code Online (Sandbox Code Playgroud)