Ruby on rails _和_属于_很多吗?为什么我想让其他模型的属性可以访问?
如果我有两个模型:经验模型和类别模型,它们是多对多的关联,看起来是这样的:Ruby on rails _和_属于_很多吗?为什么我想让其他模型的属性可以访问?,ruby-on-rails,associations,Ruby On Rails,Associations,如果我有两个模型:经验模型和类别模型,它们是多对多的关联,看起来是这样的: class Experience < ActiveRecord::Base has_and_belongs_to_many :categories end class Category < ActiveRecord::Base has_and_belongs_to_many :experiences end 课堂体验
class Experience < ActiveRecord::Base
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :experiences
end
课堂体验
为什么有时人们会添加:
attr\u accessible:体验模型中的类别ID
?我发现自己不得不这样做,在Rails admin gem中,我可以将类别添加到特定的体验中,但我不明白为什么。如果在体验和类别之间建立HABTM关系,那么除了其他事情之外,您还有可用的方法体验#类别ID
。此方法返回当前体验的类别的单个ID
Experience.first.category_ids
现在,此方法还有经验#category\u id=
变体,因此您可以使用它来分配类别的ID:
Experience.first.category_ids = [1, 2, 3]
现在,当您有一个表单,让您为体验选择类别时,您只有所选类别的ID。当您提交表单时,这些ID通过批量分配传递给
Experience#category_id=
,如果您在attr_accessible
中没有此category_id
,您会收到一个错误。如果您在Experience和category之间设置了HABTM关系,那么除其他外,可用方法体验#类别_id
。此方法返回当前体验的类别的单个ID
Experience.first.category_ids
现在,此方法还有经验#category\u id=
变体,因此您可以使用它来分配类别的ID:
Experience.first.category_ids = [1, 2, 3]
现在,当您有一个表单,让您为体验选择类别时,您只有所选类别的ID。当您提交表单时,这些ID将通过批量分配传递给Experience#category_id=
,如果您在attr\u accessible
中没有此category_id
,则会出现错误