我在 rails3 中使用连接时遇到问题。
有两种型号:
class User < ActiveRecord::Base
end
class Post < ActiveRecord::Base
belongs_to :master,class_name: 'User'
end
用户模型有“名称”字段,当我试图找到一些这样的帖子时:
Post.joins(:master).where("master.name like '%mike%'")
出错了,日志显示如下:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'master.name' in 'where clause': SELECT `posts`.* FROM `posts` INNER JOIN `users` ON `users`.`id` = `posts`.`master_id` WHERE (master.name like '%mike%')
我想也许我会给用户一个别名,但是如何呢?
我知道它会像这样工作:
Post.joins("join users master on posts.master_id=master.id").where("master.name like '%mike%'")
但是有没有更好的方法?有好心人帮我解决这个问题吗?