/ / Rails join(includes)テーブルで、「id」が1つのテーブルに存在せず、異なる主キー(ruby-on-rails、join、associations)

Railsは、「id」が1つのテーブルと異なる主キーに存在しないテーブルを結合(包含)します - ruby​​-on-rails、join、associations

私は2つのモデルを持っており、1つは主キーとして「id」を持っています。 2番目のモデルには主キーとして「id」がありません。代わりに複合キーがあります。これらを結合するにはどうすればよいですか?

class A < ActiveRecord::Base
has_one :B, :order => "dt DESC"
end

class B < ActiveRecord::Base
belongs_to :A, :foreign_key => :emp_id
end

emp_idは外部キーとして機能します。 Aのコントローラーでは、

arel = A.includes(:b)

これは失敗します。 次のエラーが発生します、

ActiveRecord :: StatementInvalid(Mysql2 :: Error:「フィールドリスト」の不明な列「b.id」:SELECT a.id AS t0_r0、...。

どうすればいいですか?

回答:

回答№1は0

設定してみてください primary_key 〜に belongs_to または has_one.

これらのオプションの詳細については、次のURLをご覧ください。

ActiveRecordbelongs_to

ActiveRecord has_one