在Rails中初始化class_attribute
的正确方法是什么?
我正在使用它:
class Foo < ActiveRecord::Base
class_attribute :foobar
self.foobar = []
# ...
end
这似乎工作正常,但似乎对我来说看起来有点非Railsy。
答案 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