我在我的模型中得到了未定义的方法,但我相信我拥有它。
class Business < ActiveRecord::Base
attr_accessible :user_id, :name, :city, :state, :zip, :street, :latitude, :longitude
def new_address
[street, city, state, zip].join(', ')
end
geocoded_by :new_address
after_validation :geocode, :if => :new_address_changed?
end
我在new_address_changed?
上收到未定义的方法错误这是错误的吗?
答案 0 :(得分:3)
*_changed?
方法仅适用于活动记录属性,不适用于用户定义的方法。对你而言,street_changed?
等会起作用。
最好的方法是定义另一种方法:
def address_changed?
street_changed? || city_changed? || state_changed? || zip_changed?
end
答案 1 :(得分:2)
您可以自己定义method
,因为new_address
不是active_record
属性:
def new_address_changed?
street_changed? || city_changed? || state_changed? || zip_changed?
end