如果我有两个模型:体验和类别,它们是多对多的关联,如下所示:
class Experience < ActiveRecord::Base
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :experiences
end
为什么有时人们会添加:
体验模型中的 attr_accessible :category_ids
?我发现自己必须这样做,所以在Rails admin gem中我可以为特定体验添加类别,但我不明白为什么。
答案 0 :(得分:3)
如果您在体验和类别之间设置HABTM关系,除了其他方面,您还有可用的方法Experience#category_ids
。此方法返回当前经验所具有的各个类别ID。
Experience.first.category_ids
现在此方法还有Experience#category_ids=
变体,因此您可以使用它来分配类别ID:
Experience.first.category_ids = [1, 2, 3]
现在,当您有一个表单让您为体验选择类别时,您只拥有所选类别的ID。当您提交表单时,这些ID会通过批量转换传递给Experience#category_ids=
,如果您在category_ids
中没有attr_accessible
,则会收到错误。