在 rails 中可以创建一个函数,每次更改特定属性时,rails 都会执行一个函数。就我而言,每次 object.address(我有 geocoded_by :address 和 after_validation :geocode)被更改时,我都想做 object.geocode。我在铁轨上 3
问问题
348 次
3 回答
3
只需传递该字段即可检查您的 after_validation 中的脏污程度,如
after_validation :geocode, :if => :address_changed?
于 2012-02-26T21:43:31.310 回答
0
我认为最好的解决方案是在您的模型中包含 ActiveModel::Dirty,然后您可以在回调中检查它
class MyModel < ActiveRecord::Base
def after_save
if address_changed? do
#some stuff..
end
end
end
于 2011-10-06T15:15:39.270 回答
0
对我来说,最优雅的解决方案是根据要地理编码的属性(地址)是否发生变化来使用条件验证。您可以在您正在地理编码的模型的“after_validation”回调中执行类似的操作,或者将其放置在任何适合您目的的 Active Record 回调中:
after_validation :geocode, :if => lambda{ |obj| obj.address_changed?}
于 2012-01-18T17:21:44.803 回答