2012-07-02 40 views

回答

1

如果你都做了示范它将帮助码。

在你的模型文件添加用户attr_accessible

attr_accessible :name 
+0

我有添加你建议我的线路,然后也没有解决问题,这里是代码/ 要求'摘要' class User true, :length => {:maximum => 50} 验证:email::presence => true, :format => {:with => email_regex }, :唯一性=> {:case_sensitive => false} – Dennis

+0

糟糕!一个更正。它应该是 attr_accessible:名称 –

+0

感谢萨加尔问题解决了, – Dennis

1

在你config/application.rb,你有下面这行:

config.active_record.whitelist_attributes = true 

,而在你的模型,你错过了这条线:

attr_accessible :name 

不要更改配置文件,但添加attr_accessible。您应该阅读http://guides.rubyonrails.org/security.html#mass-assignment以更好地了解质量分配安全问题。

+0

我已经添加了行,你已经建议我,然后也没有解决问题 – Dennis

+0

错误信息仍然是完全一样的? –

+0

是的,同样的信息再次出现。 – Dennis

3

几件事情:

质量分配通常意味着传递属性成创建一个对象作为属性信息的一部分散列呼叫。也就是说,你将一堆散列中的属性传递给创建新对象的调用。例如:

@user = User.create({:name => "My name", :user_type => "nice_user"}) 

然而,Rails包含意味着不是所有的属性都可以通过默认分配这样一些基本的安全规则。你必须事先指定哪些可以。你这样做是这样的:

class user < ActiveRecord::Base 
    attr_accessible :name, :user_type 
end 

如果不指定属性为attr_accessible,而且你通过它来创建对象,你得到你所张贴的错误。

以下是详细信息:

http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html

另一种方法是设置某些属性,当你第一次创建记录,并经过设置其他 - 就像这样:

# In this example `user_type` is not attr_accessible so it needs to be set specifically 
@user = User.create({:name => "My name"}) 
@user.user_type = "nice_user" 
@user.save 
+0

感谢凯文,我在user.rb(attr_accessible:名字)目前它正在工作,实际上这是我的第一个阶段,所以将来我会用上面提到的代码进行练习,非常感谢。 – Dennis

相关问题