2013-10-13 100 views
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?這是錯誤的嗎?

回答

3

*_changed?方法僅適用於活動記錄屬性,不適用於用戶定義的方法。爲你,street_changed?等將工作。

最好的出路是定義另一個方法,像這樣:

def address_changed? 
    street_changed? || city_changed? || state_changed? || zip_changed? 
end 
+0

噢噢噢,會是什麼替代如果'new_address'改變了? – hellomello

+0

那麼,你將不得不自己定義'address_changed?'方法,並檢查其中的單個字段更改。 – pungoyal

2

,你可以通過你自己的定義method,如new_addressactive_record屬性:

def new_address_changed? 
    street_changed? || city_changed? || state_changed? || zip_changed? 
end