2013-05-10 157 views
0

我有一个学校项目,我有点困惑如何制作标签和类别关联的帖子,所以当我在谷歌寻找一些提示时,我发现这个 thread。所以,我想脚手架所描述和它工作得很好,但是当我跑了服务器,并试图创造新的岗位此出现:Rails架构脚手架

::加载ActiveModel :: MassAssignmentSecurity中的错误PostsController#创建

无法mass-assign受保护的属性:类别,用户

所以我真的不知道什么是错,但我可以使用一些帮助。或者,也许可以有另一种方式建议,mabe简化如何脚手架标签和类别的帖子。

非常感谢您

这里的模型:

class Post < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :user 
    attr_accessible :body, :title, :category, :user 
end 

class Category < ActiveRecord::Base 
    attr_accessible :name 
end 

class Serie < ActiveRecord::Base 
    attr_accessible :name, :website 
end 

class Tag < ActiveRecord::Base 
    attr_accessible :name 
end 

class TagsSerie < ActiveRecord::Base 
    belongs_to :serie 
    belongs_to :tag 
    # attr_accessible :title, :body 
end 

class TagsPost < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :tag 
    # attr_accessible :title, :body 
end 

class User < ActiveRecord::Base 
    attr_accessible :email, :password 
end 
+0

你错过了所有的协会对应...例如在Category has_many:posts,has_many:users。或者在标签模型中,有没有1:n关联或者n:m?请首先解决这个问题,也许这会自动消除你的错误。 – Mattherick 2013-05-10 13:03:39

+0

我添加了这些对应物,但我坚持这两个错误。如果我有类别,而不是category_id它说'类别(#36250644)预期,得到字符串(#21132528)',否则它说原始'不能mass-assign受保护的属性:类别,用户' – Mythago 2013-05-13 15:44:02

+0

您可以发布您的架构和控制器+表单?得到的字符串(#21132528)也是错误的,因为它应该是一个整数。 – Mattherick 2013-05-13 16:52:51

回答

1

尝试在您的文章模型设置attr_accessible :category_id, :user_id

2

在您的文章模型添加attr_accessible

class Post < ActiveRecord::Base 
    attr_accessible :category_id, :user_id, :other_attributes_from_post_model 
end 
+0

现在这是怎么我的帖子模型的样子:类岗位<的ActiveRecord :: Base的 belongs_to的:类 belongs_to的:用户 attr_accessible:身体:标题:CATEGORY_ID,:USER_ID ,:other_attributes_from_post_model 结束 – Mythago 2013-05-10 10:54:41

+0

并行吗? – Mattherick 2013-05-10 11:02:26

+0

..对不起,我forgott补充说,它显示了我之前发布的相同短语 – Mythago 2013-05-10 11:09:56

1

默认情况下,Rails的创建与它的所有属性不可访问的脚手架车型,所以它们不可由外部用户编辑。

因此,当您尝试创建新帖子时,会引发错误消息,因为类别和用户都是Post的受保护属性。

您应该在同一个文件夹中检查您的应用/模型/ post.rb和其他模型,以定义可由外部用户(例如Web用户)编辑的属性。

class Post < ActiveRecord::Base 
    attr_accessible :category_id, :user_id 
end 

在另一方面,这样访问属性没有任何保护,更多的外部版本,所以你不应该使用attr_accessible为所有这些只是为那些你会真正允许外部修改。

+1

3.times同样的答案:) – Mattherick 2013-05-10 11:02:54