Ruby 在 Rails 上 Active Record 内部联接不起作用

Ruby on Rails Active Record inner join not working

我有 2 个模型:参与度、用户。参与度基本上是指用户预订的项目。每次参与都是针对特定用户的。参与的用户有一个外键。我想加入与用户的互动,以便我可以看到用户的详细信息。

这是我的模型

class Engagement < ActiveRecord::Base
  belongs_to :food_item  
  belongs_to :user
end
class User < ActiveRecord::Base
    has_many :engagements
    has_many :food_item, through: :engagements
end

我是运行下面的查询:

Engagement.joins("INNER JOIN users ON users.id = engagements.user_id")

它没有连接两个表。

任何帮助将不胜感激

试试这个 Engagement.joins(:users)

应该可以。

你的问题是正确的。 您正在进行内部联接,并且仅 returning 与用户相关的参与。

要 return 用户数据,您应该这样做:Engagement.select('tasks.*, users.*').joins(:user)。这样,对象将具有参与度和用户属性。但这不是 Rails 方式。

"correct"方式是:

engagements = Engagement.includes(:user)
engagements.first.user # this will return the user data

通过这种方式,您可以获取所有参与度并预加载用户数据,从而避免 n + 1 次查询 (Eager-loading) ;)