模型中没有定义的方法?

时间:2013-10-13 06:29:26

标签: ruby-on-rails ruby ruby-on-rails-3 methods

我在我的模型中得到了未定义的方法,但我相信我拥有它。

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?上收到未定义的方法错误这是错误的吗?

2 个答案:

答案 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
相关问题