在我看來,我使用<%= f.text_field :latlon %>
來編輯latlon
屬性(不是ActiveRecord列)。保存時,我想解析latlong
並將其拆分爲lat
和lon
中的before_save
回調。訪問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