0

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
4

2 回答 2

2

与 Kaeros 所说的相反,我实际上建议不要允许外键字段可批量分配。原因是您在添加帖子时为某人提供了一种简单的方法来发送不同的 user_id。这可能就是您找到的示例不包括外键的原因。

解决此问题的最佳方法是在为用户添加新帖子时使用集合构建器方法:

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

如果您选择不遵循该建议,那么这实际上取决于您如何批量分配这些值。如果您的哈希包含:user_id,那么您应该使其可访问,如果它包含:user,则使用该哈希。如果你不确定,你总是可以让两者都可以访问。

于 2013-02-08T20:09:54.890 回答
0

在 attr_accessible 中使用外键似乎是正常的,也是我的默认选项。你可以在这里看到api指南也使用了这种形式。

将模型名称添加到 attr_accessible 也对我有用。

我更喜欢第一个选项,所以我很容易知道我正在处理外键

于 2013-02-08T19:39:39.053 回答