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
,您说外键在此模型上。 基于CaseModel
的has_many
,外键是model_seq_id
,因此Model
应该使用相同的外键。
我不知道你为什么要手动指定primary
键和foreign
键。 您可以简单地使用has_many
和belongs_to
并确保Model
的表有一个case_model_id
字段,它将自动运行。