ActiveAttr gem中属性和attr_accessor之间的区别?

时间:2014-08-16 00:34:23

标签: ruby-on-rails attr-accessor active-attr

我尝试使用active_attr gem来创建由NoSQL数据库支持的模型,该数据库似乎没有任何其他符合我们需求的ORM或映射器。

在文档(https://github.com/cgriego/active_attr)中,它显示了仅使用attribute定义属性的示例,有时使用attr_accessor。我不太确定我看到了区别。有人可以解释我何时应该使用一个而不是另一个?

1 个答案:

答案 0 :(得分:2)

attr_accessor是一种Ruby方法,attributeactive_attr的自定义方法。

例如:

class User
  include ActiveAttr::QueryAttributes
  attribute :first_name
end

User.new.first_name?

在上文中,attribute :first_name将使用attr_accessor创建基本的getter / setter(first_namefirst_name=),然后另外添加另一个方法{{1 }}

似乎first_name?与增强类(attr_accessorMassAssignment)的模块一起使用,而BlockInitialization用于直接增强类实例属性的模块