我的表單中有一個額外的屬性(:pagesize),它不在數據庫中。 還爲它制定者:Rails 2.通過update_attributes調用虛擬屬性的setter
def pagesize= pagesize
self.preferences["pagesize"] = pagesize
end
我想「update_attributes方法」的方法來調用制定者。 什麼是最好的類型:pagesize屬性? attr_accessor,attr_writer ...
我的表單中有一個額外的屬性(:pagesize),它不在數據庫中。 還爲它制定者:Rails 2.通過update_attributes調用虛擬屬性的setter
def pagesize= pagesize
self.preferences["pagesize"] = pagesize
end
我想「update_attributes方法」的方法來調用制定者。 什麼是最好的類型:pagesize屬性? attr_accessor,attr_writer ...
如果屬性未在模型中定義,你可以定義setter方法,然後做任何你想要的邏輯:
class YourModel < ActiveRecord::Base
attr_writer :pagesize
def pagesize=(val)
self.size_of_page = val
end
end
這樣的事情。我寫了AR版本,因爲我假定你正在使用它,但DataMapper或mongoid的原理是相同的。
你可以調用attr_accessor變量的update_attributes,但它需要被定義爲可訪問的。另外,如果你把變量定義爲attr_writer,你不需要定義一個setter方法,因爲它被添加到後端。結賬Why use Ruby's attr_accessor, attr_reader and attr_writer?欲瞭解更多信息
順便說一句,我認爲你可以不用attr_writer,只要你不想存儲的價值。 attr_writer在這種情況下提供了一個實例var @pagesize。您只能在內部使用它,並且無法從外部訪問它。但是,如果你真的需要這個變量,這纔是有價值的。否則,setter方法就足夠了。 – ChuckE