ActiveRecord包括不使用外键

我很难让表格关联正常工作。 我有2个类(表),我需要彼此关联。

class CaseModel < ActiveRecord::Base self.primary_key = 'seq_id' has_many :model, foreign_key: 'model_seq_id' end class Model {includes(:case_model)} end 

当我运行Model.with_case_info我得到以下SQL:

 SELECT "CASE_MODEL".* FROM "CASE_MODEL" WHERE "CASE_MODEL"."SEQ_ID" IN (results from above sql) 

我正在寻找的是

 SELECT "CASE_MODEL".* FROM "CASE_MODEL" WHERE "CASE_MODEL"."MODEL_SEQ_ID" IN (results from above sql) 

任何帮助,将不胜感激

您指向Model类中的错误外键。 以下是正确的。

 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 

belongs_to ,您说外键在此模型上。 基于CaseModelhas_many ,外键是model_seq_id ,因此Model应该使用相同的外键。

我不知道你为什么要手动指定primary键和foreign键。 您可以简单地使用has_manybelongs_to并确保Model的表有一个case_model_id字段,它将自动运行。