有很多关于Rails中模型之间关系的例子,但它们似乎都忽略了模型的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
答案 0 :(得分:2)
与Kaeros所说的相反,我实际上建议不要允许外键字段可以进行大规模分配。原因是您在添加帖子时为某人发送不同的user_id开辟了一条简单的方法。这可能是您找到的示例不包括外键的原因。
解决此问题的最佳方法是在为用户添加新帖子时使用集合构建器方法:
user.posts.create(params[:post])
如果您选择不遵循该建议,那么它实际上取决于您如何批量分配值。如果您的哈希包含:user_id
,那么您应该使其可访问,如果它包含:user
,请使用该哈希。如果您不确定,可以随时使用。
答案 1 :(得分:0)
在attr_accessible中使用外键似乎是正常的,并且是我的默认选项。您可以看到api指南也使用此表单的here。
将模型名称添加到attr_accessible也对我有用。
我更喜欢第一个选项,所以我很清楚我正在处理外键