我很难让表关联正常工作。我有2个类(表),我需要彼此关联。
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
当我运行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)
任何帮助将不胜感激
答案 0 :(得分:2)
您指向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
上,您说外键在此型号上。根据{{1}}中的has_many
,外键为CaseModel
,因此model_seq_id
应使用相同的外键。
答案 1 :(得分:0)
我不确定您为何要手动指定primary
和foreign
键。您只需使用has_many
和belongs_to
,并确保Model
表中有case_model_id
字段,它会自动生效。