0

我的表单中有一个额外的属性(:pagesize),它不在数据库中。它还有一个设置器:

def pagesize= pagesize
  self.preferences["pagesize"] = pagesize
end

我想要'update_attributes' 方法来调用该设置器。:pagesize 属性的最佳类型是什么?attr_accessor, attr_writer...

4

2 回答 2

1

如果您的模型中没有定义该属性,您可以定义设置器,然后执行您想要的任何逻辑:

class YourModel < ActiveRecord::Base

  attr_writer :pagesize

  def pagesize=(val)
    self.size_of_page = val
  end

end

像这样的东西。我写了 AR 版本,因为我假设你正在使用它,但是 DataMapper 或 mongoid 的原理是相同的。

于 2012-10-08T15:14:01.633 回答
1

您可以在 attr_accessor 变量上调用 update_attributes,但需要将其定义为可访问的。此外,如果您将变量定义为 attr_writer,则无需定义 setter 方法,因为它已添加到后端。Checkout为什么使用 Ruby 的 attr_accessor、attr_reader 和 attr_writer?了解更多信息

于 2012-10-08T15:28:32.340 回答