Ruby on rails Rails使用来自不同activerecord模型的列作为外键

Ruby on rails Rails使用来自不同activerecord模型的列作为外键,ruby-on-rails,activerecord,foreign-keys,Ruby On Rails,Activerecord,Foreign Keys,执行此操作时出现以下错误: class Model1 #has an column "attr1" end class Model2 #has an column "attr2" end class Model3 #has an column "attr3" belongs_to :model2 belongs_to my_model_1, class_name: 'Model1', primary_key: :attr1, foreign_key: "#{model2.attr

执行此操作时出现以下错误:

class Model1
 #has an column "attr1"
end

class Model2
 #has an column "attr2"
end

class Model3
 #has an column "attr3"
 belongs_to :model2

 belongs_to my_model_1, class_name: 'Model1', primary_key: :attr1, foreign_key: "#{model2.attr2}-#{attr3}"
end

有没有一种方法可以像我尝试的那样,将“从属于”关系中的列作为外键的一部分使用?

您不能将动态值传递给
:外键
,因此您必须使用为列名选择的值手动写入:

  `method_missing': undefined local variable or method `model2' for Model1 (call 'Model1.connection' to establish a connection):Class (NameError)
你可以查看文档

belongs_to my_model_1, class_name: 'Model1', primary_key: :attr1,
                       foreign_key: "model2_attr2_attr3"