Rails Arel与连接表上的where条件连接

时间:2016-08-30 20:11:21

标签: mysql ruby-on-rails arel

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

发布模型

or

用户模型

class Post
  belongs_to :user
end

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

这是Rails查询:

class User
  has_many :posts
end

我需要使用Arel转换此查询。

提前致谢!

2 个答案:

答案 0 :(得分:4)

这应该这样做。

# 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'))

答案 1 :(得分:0)

如果你只需要Arel作为where部分(不是连接),我认为这将是一个更好的解决方案(将使用Activerecord结果):

Post.joins(:user).where(User.arel_table[:first_name].eq('Mark'))