1

鉴于以下示例取自此处

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?冒号是干什么用的?有人可以解释一下这里发生了什么吗?

4

2 回答 2

3

attr_accessible是一种方法

[它] 指定可以通过批量分配设置的模型属性白名单。

它的参数是一个符号数组(:例如,业务:content是一个符号)。

该方法遍历表示为符号的属性列表,并将它们添加到可以批量分配的属性列表中。

大多数 Ruby 书籍都应该讨论过符号

于 2013-01-18T19:52:12.247 回答
0

attr_accessible是从 ActiveRecord::Base 继承的方法。这是一个元方法,您可以将符号传递给它(应该命名为类的属性)。它所做的是使它们可访问,因此现在在另一个区域posts.content中,现在可用于其他方法。

validates在允许将它们保存到数据库之前确保某些属性。如果条件评估为假,则会引发错误。再次首先传递一个与属性同名的符号(在本例中:name),然后传入要检查的条件的哈希(在本例中为 `:presence => true')is fa

于 2013-01-18T19:58:03.527 回答