我的表单中有一个额外的属性(:pagesize),它不在数据库中。它还有一个设置器:
def pagesize= pagesize
self.preferences["pagesize"] = pagesize
end
我想要'update_attributes' 方法来调用该设置器。:pagesize 属性的最佳类型是什么?attr_accessor, attr_writer...
我的表单中有一个额外的属性(:pagesize),它不在数据库中。它还有一个设置器:
def pagesize= pagesize
self.preferences["pagesize"] = pagesize
end
我想要'update_attributes' 方法来调用该设置器。:pagesize 属性的最佳类型是什么?attr_accessor, attr_writer...
如果您的模型中没有定义该属性,您可以定义设置器,然后执行您想要的任何逻辑:
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 方法,因为它已添加到后端。Checkout为什么使用 Ruby 的 attr_accessor、attr_reader 和 attr_writer?了解更多信息