필자는 <%= f.text_field :latlon %>
을 사용하여 ActiveRecord 열이 아닌 latlon
특성을 편집합니다. 절약 할 때 latlong
을 구문 분석하고 before_save
콜백에서 lat
및 lon
으로 분할하고 싶습니다.before_save 콜백의 비 ActiveRecord 특성에 대한 액세스
콜백 내의 변수 latlon
의 매개 변수에 액세스하는 방법을 모르겠습니다. 나는 self.latlong
을 시도했지만 lat
및 lon
속성과 동일한 attr_reader
을 호출합니다.
컨트롤러에서이 작업을 수행 할 수 있다는 것을 알고 있지만, 이것은 모델 논리입니다.
#app/models/bla.rb
class Bla < ActiveRecord::Base
attr_accessible :name, :lat, :lon, :latlon #but latlon is not an ActiveRecord Attribute
before_save :foo
def latlon
"#{lat}, #{lon}"
end
attr_writer latlon
private
def foo
self.lat = # regex that parse latlon
self.lon = # regex that pase coors
end
end
오류를 게시 할 수 있습니까? –
예, 이것은 모델 논리이지만 컨트롤러에서 올바른 값을 전달해야합니다. –
정확히는 오류가 아닙니다. 문제는 latlon 메서드 (attr_reader)를 호출하면 실제 값 대신 "# {lat}, # {lon}"이 반환됩니다. – eveevans