假設我有兩個型號:什麼是解決belongs_to的關聯質量分配適當的方式
class Article < ActiveRecord::Base
belongs_to :category
attr_accessible :content
validates :content, :category, :presence => true
end
和
class category < ActiveRecord::Base
attr_accessible :name
has_many :articles
end
我創建一個表單來增加新的文章,並在此形式想給用戶從列表中選擇一個類別的可能性。
= form_for([:admin,@article] , :html => {:multipart => true}) do |f|
= f.label :category
= f.collection_select(:category, Category.all, :id,
:name,{:prompt => 'select category'}, {:style => 'height:50px;'})
= f.label :content
= f.text_area :content, class: 'tinymce', cols:60, rows: 15
%hr
= f.submit 'send'
當我提交表單我收到錯誤無法批量分配受保護的屬性:類別,我明白。 要解決的問題,我已經添加CATEGORY_ID條的attr_accessible和改變形式:
= f.label :category_id
= f.collection_select(:category_id, Category.all, :id,
:name,{:prompt => 'select category'}, {:style => 'height:50px;'})
然後一切工作正常(我可以創建與數據庫相關的CATEGORY_ID文章對象),但我不認爲這是正確的方式。 下面是我在ArticlesController
def create
@article = Article.new(params[:article])
if @article.save
redirect_to([:admin,@article])
else
render 'new'
end
end
創建操作有人能解釋我如何改進這一點。
看起來好像沒什麼問題 –
我不知道是很奇怪的是後添加「belongs_to的:類」我也必須添加CATEGORY_ID到attr_accesible保存的對象 – Karol85
它是安全的,你的平均實際實現您允許做什麼通過爲屬性定義白名單來請求。 – ted