我在rails3中使用连接时遇到问题。
有两种型号:
class User < ActiveRecord::Base
end
class Post < ActiveRecord::Base
belongs_to :master,class_name: 'User'
end
当我试图找到这样的帖子时,用户模型有'name'字段:
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%'")
但还有更好的方法吗?有什么人帮我解决这个问题?
答案 0 :(得分:0)
如果你添加这一行
has_many :posts
到您的User类,应该可以通过以下查询得到您想要的内容:
User.where("name like ?", "%mike").map(&:posts)
答案 1 :(得分:0)
试试这个:
Post.joins(:master).where("users.name like '%mike%'")
假设您有users
模型的User
表。