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

new_addressactive_record 속성이 아니므로 당신이 당신 자신에 의해 method을 정의 할 수 있습니다 :

def new_address_changed? 
    street_changed? || city_changed? || state_changed? || zip_changed? 
end 
관련 문제