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

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

发布模型

 class Post belongs_to :user end 

用户模型

 class User has_many :posts end 

我正在寻找Mark发布的post。

这是Rails查询:

 Post.joins(:user).where(users: { first_name: 'Mark' }) 

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

提前致谢!

这应该做到这一点。

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

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

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