在Rails中初始化class_attribute的正确方法是什么?

时间:2012-01-03 12:28:56

标签: ruby-on-rails ruby-on-rails-3

在Rails中初始化class_attribute的正确方法是什么?

我正在使用它:

class Foo < ActiveRecord::Base

  class_attribute :foobar
  self.foobar = []

  # ...

end

这似乎工作正常,但似乎对我来说看起来有点非Railsy。

3 个答案:

答案 0 :(得分:8)

这里描述了所有内容:http://apidock.com/rails/Class/class_attribute

如果单击“显示源”,您将看到没有可用于设置默认值的选项。你做对了。

答案 1 :(得分:3)

今年在Rails的分支主机上添加了default选项,请检查:https://github.com/rails/rails/pull/29270。通过此更改,您可以执行以下操作:

class Foo < ActiveRecord::Base
  class_attribute :foobar, default: []
end

答案 2 :(得分:1)

你做得很好(除非你继承)。

如果您继承此课程,则可以使用inherited方法避免“泄漏”。

def self.inherited(sub_class)
  self.foobar = self.foobar.clone
  # or `self.foobar = []`
end