レールでは、特定の属性が変更されるたびにレールが関数を実行する関数を作成できます。私の場合、object.address (geocoded_by :address と after_validation :geocode があります) が変更されるたびに、object.geocode を実行したいと考えています。私はレール3にいます
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
ActiveModel::Dirtyを参照してください
于 2011-10-06T15:15:39.270 に答える
0
私にとって最も洗練された解決策は、geocoded_by (住所) である属性が変更されたかどうかに基づいて、条件付き検証を使用することです。ジオコーディングしているモデルの「after_validation」コールバックで次のようなことを行うか、目的に合った Active Record コールバックに配置できます。
after_validation :geocode, :if => lambda{ |obj| obj.address_changed?}
于 2012-01-18T17:21:44.803 に答える