0

如果我有两个模型:经验和类别,它们是多对多关联,看起来像这样:

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 管理 gem 中我可以为特定体验添加类别,但我不明白为什么。

4

1 回答 1

3

如果您在 Experience 和 Category 之间设置了 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_idsin attr_accessible,您会收到错误消息。

于 2012-12-30T12:33:33.333 回答