Ruby on rails ActiveRecord包括不使用外键
我很难让表关联正常工作。我有两个需要相互关联的类表Ruby on rails ActiveRecord包括不使用外键,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我很难让表关联正常工作。我有两个需要相互关联的类表 class CaseModel < ActiveRecord::Base self.primary_key = 'seq_id' has_many :model, foreign_key: 'model_seq_id' end class Model < ActiveRecord::Base self.primary_key = 'seq_id' self.table_name = 'model'
class CaseModel < ActiveRecord::Base
self.primary_key = 'seq_id'
has_many :model, foreign_key: 'model_seq_id'
end
class Model < ActiveRecord::Base
self.primary_key = 'seq_id'
self.table_name = 'model'
belongs_to :case_model, foreign_key: 'seq_id'
scope :with_case_info, ->{includes(:case_model)}
end
我要找的是
SELECT "CASE_MODEL".* FROM "CASE_MODEL" WHERE "CASE_MODEL"."MODEL_SEQ_ID" IN (results from above sql)
非常感谢您的帮助我不知道您为什么要手动指定主键和外键。您可以简单地使用has\u many和belishing\u,并确保模型的表具有case\u Model\u id字段,并且它将自动工作。您在模型类中指向了错误的外键。以下是正确的
class Model < ActiveRecord::Base
self.primary_key = 'seq_id'
self.table_name = 'model'
belongs_to :case_model, foreign_key: 'model_seq_id'
scope :with_case_info, ->{includes(:case_model)}
end
在所属的上,您的意思是外键在这个模型上。基于has_many in CaseModel,外键是model_seq_id,因此model应该使用相同的外键。在处理遗留数据时,这并不总是可能的。正如@SeanHill所说,我处理的是遗留数据,无法修改表schemaGotcha,它的措辞让我觉得它是一个新的添加。现在我得到了一些完全错误的CASE_MODEL.SEQ_ID在0Ah中,请尝试在关系的两侧设置primary_key选项,以指向正确的主键。默认情况下,它假定id是主键,但这里不是这种情况。属于:case_model,foreign_key:'model_seq_id',primary_key:'seq_id',等等,所以我可以为每个要链接的外键设置不同的主键?所以它是‘属于:表,外键:我的列,主键:你的列,然后在另一个表上:has\u many:first\u table是的,但是你还必须在has\u many:first\u tables上设置相同的选项,外键:“my\u column”,主键:“your\u column”。
class Model < ActiveRecord::Base
self.primary_key = 'seq_id'
self.table_name = 'model'
belongs_to :case_model, foreign_key: 'model_seq_id'
scope :with_case_info, ->{includes(:case_model)}
end