Ruby on rails 4 为什么这在保存后不起作用? class-credittrue,:numericality=>{:大于=>0} 验证:除数,:presence=>true,:numericality=>{:大于等于0} 验证是否存在:用户id 保存前:设置此项 保存后:设置硬币 def set_pay_这个 self.pay_this=self.amount/self.divisior 结束 def set_便士 self.pennies=self.pay_这个*100 结束 结束

Ruby on rails 4 为什么这在保存后不起作用? class-credittrue,:numericality=>{:大于=>0} 验证:除数,:presence=>true,:numericality=>{:大于等于0} 验证是否存在:用户id 保存前:设置此项 保存后:设置硬币 def set_pay_这个 self.pay_this=self.amount/self.divisior 结束 def set_便士 self.pennies=self.pay_这个*100 结束 结束,ruby-on-rails-4,Ruby On Rails 4,beforesave set pay this工作正常,但set pennies在质押后保持为零。save只需将after save方法更改为 class Pledge < ActiveRecord::Base belongs_to :user validates :amount, :presence => true, :numericality => {:greater_than => 0} validates :divisor, :presence =&g

beforesave set pay this工作正常,但set pennies在质押后保持为零。save

只需将after save方法更改为

class Pledge < ActiveRecord::Base
  belongs_to :user
  validates :amount, :presence => true, :numericality => {:greater_than => 0}
  validates :divisor, :presence => true, :numericality => {:greater_than => 0}
  validates_presence_of :user_id
  before_save :set_pay_this
  after_save :set_pennies


  def set_pay_this
    self.pay_this = self.amount / self.divisor
  end

  def set_pennies
    self.pennies = self.pay_this * 100
  end
end
在_save调用后,但当您以便士为单位赋值时,它只是临时赋值给对象而不是永久赋值,您必须再次保存对象。
如果你把self.save放进去,那么会有一个无限循环,所以当你保存记录时使用update列,它会绕过回调

在保存任何东西时总是调用save之后,适度使用,当调用它时,执行方法set _pennies,但不要什么都不执行,我也认为self.update列或update列都可以做你想要的事情

  def set_pennies
    self.update_column(:pennies, self.pay_this * 100)
  end