Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails _和_属于_很多吗?为什么我想让其他模型的属性可以访问?_Ruby On Rails_Associations - Fatal编程技术网

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
,则会出现错误