0

find_each は、finder_sql を使用する ActiveRecord リレーションとうまく機能していないようです。誰もこれを以前に扱ったことがありますか?例えば:

class User < ActiveRecord::Base
  has_many :games, :dependent => :destroy,
           :finder_sql =>
              proc {"SELECT * FROM games WHERE player_0_id = #{id} OR player_1_id = #{id}"}
end

class Game < ActiveRecord::Base
  belongs_to :player_0, :class_name => "User", :foreign_key => "player_0_id", :inverse_of => :games
  belongs_to :player_1, :class_name => "User", :foreign_key => "player_1_id", :inverse_of => :games
end

@user.games.each の呼び出しは正常に機能し、関心のあるすべてのゲームを反復処理します。しかし、@user.games.find_each を呼び出すと、次のようになります。

ActiveRecord::StatementInvalid:
   SQLite3::SQLException: no such column: games.user_id: SELECT  "games".* FROM "games"  WHERE "games"."user_id" = 2 AND ("games"."id" >= 0) ORDER BY "games"."id" ASC LIMIT 1000
4

1 に答える 1

0

与えられた問題を解決するにはhttp://compositekeys.rubyforge.org/を見てください。

于 2013-04-02T16:37:42.783 に答える