【发布时间】:2011-03-05 09:29:22
【问题描述】:
我有一个具有before_update 回调的模型。据我了解,before_update 是在模型实例上调用 update_attributes 时调用的。我的假设是如果before_update 回调返回false 记录将不会被更新。
然而,这似乎不像假设的那样工作。每次我调用update_attributes 时,即使before_update 返回false,记录也会被保存。如果before_update 返回false,您是否知道如何防止记录被更新?这是我在 user.rb 文件中尝试过的:
class User < ActiveRecord::Base
validates :first_name, :last_name, :presence => true
before_update do
false
end
end
这是我在 Rails 控制台中尝试过的:
u = User.new(:first_name=>"John", :last_name => "Doe")
=> #<User id: nil, first_name: "John", last_name: "Doe", created_at: nil, updated_at: nil>
u.update_attributes(:first_name=>nil)
=> false
u.changed?
=> true
u
=> #<User id: nil, first_name: nil, last_name: "Doe", created_at: nil, updated_at: nil>
【问题讨论】:
标签: ruby-on-rails ruby activerecord