2011-03-29 77 views
1

我最近开始在rails(3.0.5)中构建应用程序。为了让事情发展,我搭建了一个模型(比如User)。现在,这个创建的模型是ActiveRecord::Base的完全裸扩展,但是控制器使用User.create(params[:user])等暗示attr_accessible正在设置。Ruby on Rails attr_accessible和脚手架

过了一段时间(现在),在发生一些变化之后,我得到了关于质量分配中受保护字段的警告,并且这些方法都没有工作!任何人都可以帮我弄清楚为什么这是为什么轨道会支撑一些不应该工作的东西?

回答

1

脚手架和attr_accessible是两个完全不同的东西。

当您指定一个属性为可访问的时,您会说当您尝试对模型进行质量分配(如保存)时,只会更新可访问的值。因此,如果您的用户名字段可以访问,并且您尝试更改密码字段,则后者不会更改,您将收到警告。

另一方面,脚手架只是让RESTful资源快速启动并运行的快速方法。

这两个想法确实没有联系。

+0

谢谢,我想我想通了。我猜'attr_accessible'的默认设置是表中的所有字段。然而,当我调用'attr_accessible'来允许'虚拟'字段与'create'等一起工作时,它会覆盖这个初始配置,只留下我定义为可访问的属性。 – connec 2011-03-29 07:42:25

+2

没有默认值。您可以将它用于某些领域或不是。如果不是,所有字段都可以大量更新。如果是的话,即使一个可访问字段意味着其他字段也不能大规模更新。更多关于这个问题:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html – Spyros 2011-03-29 07:56:52

+0

感谢您的澄清! – connec 2011-03-30 11:24:15