我正在尝试使用active_attr gem来创建由NoSQL数据库支持的模型,该数据库似乎没有任何其他orm或映射器适合我们的需求。
在文档(https://github.com/cgriego/active_attr)中,它展示了仅使用attribute
和有时使用attr_accessor
定义属性的示例。我看不出有什么区别。有人能解释一下什么时候我应该用其中一个而不是另一个吗?
attr_accessor
是Ruby方法,attribute
是active_attr
的自定义方法。
class User
include ActiveAttr::QueryAttributes
attribute :first_name
end
User.new.first_name?
在上面,attribute :first_name
将使用attr_accessor
创建基本的getter/setter (first_name
和first_name=
),然后额外添加至少另一个方法first_name?
。
似乎attr_accessor
与增强类(MassAssignment
, BlockInitialization
)的模块一起使用,而attribute
用于直接增强类实例属性的模块。