【问题标题】:Why does my .where statement does not work with a join in ActiveRecord?为什么我的 .where 语句不适用于 ActiveRecord 中的联接?
【发布时间】:2012-09-01 11:31:08
【问题描述】:

在我的应用中,我有一个查询来确定游戏是否有喜欢,

@games = Like.select('l.*').where(:game_id => @game.id).joins('join likes l on likes.user_id=l.likes and l.user_id=likes.likes')

游戏需要有一定的id,并且有2个用户都喜欢游戏

第一个 where(:game_id => @game.id) 虽然返回多个 game.id 的结果但不起作用,我该如何解决?

【问题讨论】:

  • 你为什么要将likes表加入到自身上?

标签: ruby-on-rails ruby-on-rails-3 activerecord where-clause


【解决方案1】:

如果你已经像这样建立了两个模型之间的关系:

class Game < ActiveRecord::Base
    has_many :likes
end

class Like < ActiveRecord::Base
    belongs_to :game
end

然后在你的控制器中你只需要:

@game = Game.find_by_id(game.id)
@likes = @game.likes.count

无论如何,在这种情况下,我认为最好的方法是使用 add likes 作为属性并使用 counter_cache_column。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多