mysql - 使用不同的 foreign_key 加入并搜索?

标签 mysql ruby-on-rails join foreign-keys

我得到了以下模型:

class Coaching < ActiveRecord::Base
  ...
  belongs_to :user
  belongs_to :coach, class_name: 'User', foreign_key: 'coach_id'
  ...
end

现在我想搜索用户和教练的姓氏。

我试过:

Coaching.joins(:users, :coaches).where('users.lastname LIKE :search', search: "%#{params[:search]}%")

Coaching.joins(:users, :coaches).where('users.lastname LIKE :search OR coaches.lastname LIKE :search', search: "%#{params[:search]}%")

第一次尝试只返回用户,第二次尝试抛出错误:

Mysql2::Error: Unknown column 'coaches.nachname' in 'where clause'

我怎样才能做到这一点?

最佳答案

知道了!

Coaching.joins(:user, :coach).where("users.lastname LIKE :search OR coaches_coachings.lastname LIKE :search", search: "%#{params[:search]}%")

Rails 称为 :coach加入coaches_coachings出于某种原因,我在日志中看到了所以我替换了 coachescoaches_coachings一切都像魅力一样!

关于mysql - 使用不同的 foreign_key 加入并搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31878738/

相关文章:

javascript - rake 中止!找不到 JavaScript 运行时

sql - 如何使用 elasticsearch 获得 SQL 中的 JOIN 功能?

MySQL LEFT Join 具有多种可能性和 Inner Join

mysql - Ruby on Rails UTF8 问题

ruby-on-rails - 使用 Paperclip 从 AWS 下载声音文件

ruby-on-rails - 在同一台服务器上使用 RVM 和 Passenger 部署 Ruby 1.9.2 和 1.8.7 的最佳方式

mysql - 按使用标签的帖子数量对标签进行排序?

php - 按名称分组 按名称排序返回所有字母

mysql - 在同一个表中选择

mysql - SQL 转换协助