小编mar*_*ngf的帖子

'includes'方法似乎不适用于Rails 4中的'where'

在我的模型中我有:

class Song < ActiveRecord::Base

  belongs_to :artist

  def self.default_scope
    includes :artist
  end

  def self.search query
    if query
      where "title LIKE :query OR artists.name LIKE :query", query: "%#{ query }%"
    else
      where nil
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

def index
  @songs = Song.search(params[:search])
  respond_with(@songs)
end
Run Code Online (Sandbox Code Playgroud)

当我搜索时,我收到以下错误:

Mysql2::Error: Unknown column 'artists.name' in 'where clause': SELECT  `songs`.* FROM `songs` WHERE (title LIKE '%my search%' OR artists.name LIKE '%my search%' OR albums.name LIKE '%my search%')
Run Code Online (Sandbox Code Playgroud)

我做错了什么?,我认为include方法会自动进行连接.

activerecord ruby-on-rails ruby-on-rails-4

1
推荐指数
1
解决办法
3426
查看次数