我正在用rails3上的ruby製作一個簡單的BBS系統。Rails 3模型協會
3個主要模式是會員/分類/文章。
文章屬於會員/類別,(db表中的member_id/category_id列) 和每個成員/類別'has_many'文章。
當特定用戶試圖寫一篇文章,我試圖通過它
def new
@article = current_member.articles.new
end
,並且當沒有任何形式的輸入或任何被創建的製品自動填充在member_id部分。
現在,我應該怎麼做,如果我想自動填充文章的category_id列? 我相信每個數據相關的工作都應該在模型中完成。不過,我傳遞:類別值通過URL
例如,
本地主機:3000 /用品/ QNA /新
將意味着物品應具有2 CATEGORY_ID(假設有ID類別= 2有name = qna,同樣,我做了路由作業,我可以成功地從params [:category]中獲得'qna')。
我應該使用
def create
current_member.articles.build(:category => get_category_id_from_name(params[:category]))
end
?但是沒關係?因爲我相信因爲模型不能訪問params變量,所以控制器必須完成上述工作,那不是'rails方式' 我不想使用嵌套表單,因爲我不希望用戶在寫入時選擇一個類別。它就像是一個QnA板,如果用戶點擊'寫'按鈕,這意味着用戶正在寫一個QnA板。
是的,我想到了這一點,但如果用戶使用ex)firefox,將隱藏的只讀變量更改爲其他內容? – user482594 2010-10-27 23:04:56
如果它仍然是有效的類別ID,那麼我不會看到問題。除非只有一些成員可以發佈到某些類別。無論誰去改變這個隱藏的形式價值的麻煩顯然都是無花果的。您可以檢查控制器,以查看URL中類別的類別ID是否與隱藏輸入中傳遞的ID匹配,如果不是這種情況,則不保存該文章。雖然我在RoR中已經足夠綠了,不知道該怎麼做。 – sholsinger 2011-03-24 00:04:39