2013-02-08 30 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也适用于我。

我更喜欢第一种选择,所以我很容易知道,我处理的外键

相关问题