1

私はこのように設定された2つのモデルを持っています:

class User < ActiveRecord::Base
  # external_id column in database
end

class UserUpload < ActiveRecord::Base
  belongs_to :user, :primary_key => "external_id", :foreign_key => "external_user_id"
end

しかし、私がするたびに

upload = UserUpload.find(id, :include => :user)

発行される sql は常に ID を探します (そしてゼロを使用します):

select * from users where id in (0,0,0,0 ... 0,0)

私は何か間違ったことをしていますか、それとも との関係での使用foreign_keysに問題がありますか?belongs_toinclude

4

2 に答える 2

2

私はちょうどこの同じ問題に遭遇しました。Rails 2.3.5 のバグ #3208に適用されるパッチがありますが、 2-3-stableブランチにはまだ適用されていません。

アプリでパフォーマンスの問題を引き起こしているため、このバグに対するモンキー パッチを作成しました。fix_belongs_to_include_with_primary_key.rbをディレクトリに配置config/inititalizersし、アプリを再起動して適用します。

于 2010-03-16T10:25:22.680 に答える
1

理由はわかりませんが、オプション:includeで動作しnamed_scopeます。belongs_toforeign_key

named_scope :my_all, :include => :user
于 2011-02-21T10:00:19.810 に答える