我试图将以下Rails where子句转换为使用Arel,主要是为了利用Arel提供的unordered_set
方法。
发布模型
or
用户模型
class Post
belongs_to :user
end
我正在寻找Mark发布的帖子。
这是Rails查询:
class User
has_many :posts
end
我需要使用Arel转换此查询。
提前致谢!
答案 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'))