mysql - Rails Arel 通过连接表上的 where 条件进行连接

标签 mysql ruby-on-rails arel

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

发布模型

class Post
  belongs_to :user
end

用户模型

class User
  has_many :posts
end

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

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

关于mysql - Rails Arel 通过连接表上的 where 条件进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39236293/

相关文章:

ruby-on-rails - Ruby On Rails Basic Show 方法仍然失败

php - laravel 5.4 Neo4j、mongodb 和 mysql 的组合(混合数据库)

ruby-on-rails - PG::InsufficientPrivilege: 错误:创建数据库 Ruby on Rails 应用程序的权限被拒绝

css - Sass::SyntaxError 在@import "bootstrap"in application.css.scss 之后

ruby - Rails3 Arel 访问自定义类

ruby-on-rails - 使用 ActiveRecord 3/Arel 查找单个记录的最佳方法?

ruby-on-rails - 如何在 Arel 中将单个绑定(bind)变量设为 "resuse"?

获取数据库表列中所有值的Java代码

php - 从特定用户 ID 抓取流

php - MySQL更新一些数据库字段而不覆盖字段未更改