2

我的模型中有未定义的方法,但我相信我有它。

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?这是错误的吗?

4

2 回答 2

3

*_changed?方法仅适用于活动记录属性,不适用于用户定义的方法。对你来说,street_changed?等会工作。

最好的方法是定义另一种方法,如下所示:

def address_changed?
  street_changed? || city_changed? || state_changed? || zip_changed?
end
于 2013-10-13T06:33:40.670 回答
2

您可以method自己定义,new_address而不是active_record属性:

def new_address_changed?
  street_changed? || city_changed? || state_changed? || zip_changed?
end
于 2013-10-13T06:36:02.533 回答