Rails Arel 使用连接表上的 where 条件连接

neo*_*neo 1 mysql ruby-on-rails arel

我正在尝试将以下 Rails where 子句转换为使用 Arel,主要是为了利用orArel 提供的方法。

后模型

class Post
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

用户模型

class User
  has_many :posts
end
Run Code Online (Sandbox Code Playgroud)

我正在寻找 Mark 发布的帖子。

这是 Rails 查询:

Post.joins(:user).where(users: { first_name: 'Mark' })
Run Code Online (Sandbox Code Playgroud)

我需要用 Arel 转换这个查询。

提前致谢!

kid*_*ils 5

这应该这样做。

# Generate Arel tables for both
posts = Arel::Table.new(:posts)
users = Arel::Table.new(:users)

# Make a join and add a where clause
posts.join(:users).on(posts[:user_id].eq(users[:id])).where(users[:first_name].eq('Mark'))
Run Code Online (Sandbox Code Playgroud)