2013-02-08 66 views
0

Rails中的模型之間的關係有很多例子,但它們似乎都忽略了模型的attr_accessible部分。attr_accessible模型

我正在尋找圍繞attr_accessible的一些最佳實踐,並發現相互矛盾的建議。我可以/應該:

- 將外鍵放在attr_accessible?

Class Post 
    attr_accessible :name, :user_id 

    belongs_to :user 
end 
Class User 
    attr_accessible :first, :last 

    has_many :posts 
end 

- 把完整的模型放在attr_accessible?

Class Post 
    attr_accessible :name, :user 

    belongs_to :user 
end 
Class User 
    attr_accessible :first, :last 

    has_many :posts 
end 

回答

2

相反Kaeros說的話,我真的建議不要讓外來的關鍵領域是大規模分配。原因在於,您在添加帖子時爲某人發送不同的user_id提供了一種簡單方法。這可能是你找到的例子不包括外鍵的原因。

來解決這個問題的最好辦法是增加一個新的職位爲用戶時使用的集合構建器方法:

user.posts.create(params[:post]) 

如果您選擇不遵循這個建議,那麼它真的取決於你如何是大量分配值。如果你的散列包含:user_id,那麼你應該讓它可訪問,如果它包含:user,那麼去那個。如果你不確定,你可以使兩者都可訪問。

+1

幾個月前的github安全問題是一個外鍵 - 在更新ssh密鑰時,它錯誤地允許你設置user_id(或者等效),即密鑰屬於誰,結果是你可以將您的密鑰添加到其他用戶 – 2013-02-08 21:47:00

0

在attr_accessible中使用外鍵似乎是正常的並且是我的默認選項。您可以看到here api指南也使用此表單。

將模型名稱添加到attr_accessible也適用於我。

我更喜歡第一種選擇,所以我很容易知道,我處理的外鍵

相關問題