0
find_each似乎並沒有和使用finder_sql的ActiveRecord關係相處得很好。有沒有人處理過這個?例如:find_each和finder_sql不能很好地玩對方?
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
hrmm,看起來很有趣。唯一的問題是其中一名玩家可以爲空(如果我們正在尋找某人進行快速匹配)。此外,您可以在我們的數據庫中使用同一對多個遊戲(您可以重玩之前與某人玩過的遊戲)。 – insomniac2846
如果我是你,我會改變數據模型。通過使用has_many可以輕鬆解決這個問題。看看http://xyzpub.com/en/ruby-on-rails/3.2/ar-many_to_many.html – wintermeyer
hrrm,我沒有第三個模型用於通過has_many部分 – insomniac2846