我有两个类,ProjectTypes
和RiskTypes
,它们都是多对多的,所以它们在模型上都有has_and_belongs_to关系。
当我运行rails c
时,我可以执行以下操作:
r1 = RiskType.last
返回最后一个风险类型
#<RiskType:0x00007f15e0a20d58
id: 5,
Rtype_name: "test type",
项目类型也是如此
p2 = ProjectType.last
这种关系就像我运行时一样
r1.project_types
我得到了我在种子中设置的项目类型,但现在如果我想改变它,使r1与p2相关,我会得到一个错误。
r1.project_types = p2
错误是:
/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activemodel-6.1.4.1/lib/active_model/attribute_methods.rb:469:in `method_missing': undefined method `each' for #<ProjectType id: 2, Ptype_name: "EDD", created_at: "2022-09-27 08:17:58.382009000 +0000", updated_at: "2022-09-27 08:17:58.382009000 +0000"> (NoMethodError)
这显然是我对人际关系的一些基本理解,我还不理解,非常感谢任何帮助。。。
由于project_types是一个数组,您必须按如下方式分配它:
r1.project_types = [p2]