2011-01-29 35 views
16

如果我刚才这段代码模型文件:如何设置'attr_accessible'以便不允许访问任何使用Ruby on Rails的模型的字段?

class Users < ActiveRecord::Base 
end 

这是什么意思?所有与模型相关的属性都可以访问或不可以访问?

我怎么可以为了设置“attr_accessible”到允许访问领域该模型的任何

+2

你还问“模型相关的所有属性都可以访问或不?” - 默认情况下,所有的字段都为大众分配 – 2011-01-30 15:19:04

回答

34

只需设置:

class Users < ActiveRecord::Base 
    attr_accessible #none 
end 

像潘Thomakos说(attr_accessible是参数,可以是质量-RET阵列所以,如果你在没有符号发送,则没有参数可以被访问

This ticket was useful

10

默认情况下属性都是attr_accessible(这意味着它们可以设置为我的质量分配)。

  • attr_accessible - 只有这个属性列表可以通过质量赋值(白名单)来设置。
  • attr_protected - 这些属性不能通过质量分配(黑名单)进行设置。
  • attr_readonly - 除创建记录时外,不能设置这些属性。

要完全禁止大规模分配,使用这样的:

 
ActiveRecord::Base.send(:attr_accessible, nil) 

此命令将禁止大规模分配的所有活动记录的对象,但你可以指定一个或多个模型来执行此命令如果你想在某些情况下批量分配,但在其他情况下则不需要。

+0

访问,但我怎么能“‘attr_protected’ “特定模型的所有属性? – user502052 2011-01-29 18:05:43

+0

我已经更新了我的信息以及该信息。 – 2011-01-29 18:10:06

相关问题