鉴于以下示例来自here:
class Post < ActiveRecord::Base
attr_accessible :content, :name, :title
validates :name, :presence => true
validates :title, :presence => true,
:length => { :minimum => 5 }
end
我知道我们正在基于ActiveRecord::Base
类创建一个类。在下一行,attr_accessible :content, :name, :title
发生了什么?我们是在声明变量,创建方法还是调用方法?像:some_variable
这样的表达式是什么?冒号是什么?有人可以基本了解这里发生了什么吗?
答案 0 :(得分:3)
[It]指定可通过质量分配设置的模型属性的白名单。
它的参数是符号数组(:
商家,例如,:content
是符号)。
该方法遍历属性表达为符号的列表,并将它们添加到可以批量分配的属性列表中。
大多数Ruby书籍应该讨论过symbols。
答案 1 :(得分:0)
attr_accessible
是从ActiveRecord :: Base继承的方法。这是一种将符号传递给它的元方法(应该将其命名为类的属性)。它的作用是使它们可访问,因此现在在另一个区域posts.content
现在可用于其他方法。
validates
在将它们保存到数据库之前确保某些属性。如果条件的计算结果为false,则会引发错误。再次首先传递一个与属性同名的符号(在本例中为:name
),然后传入要检查的条件的哈希值(在本例中为`:presence =&gt; true') FA