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