2013-10-13 3 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_address не active_record атрибут:

def new_address_changed? 
    street_changed? || city_changed? || state_changed? || zip_changed? 
end 
Смежные вопросы