2013-05-10 200 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