1

我在 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%'")

但是有没有更好的方法?有好心人帮我解决这个问题吗?

4

2 回答 2

0

Try this:

Post.joins(:master).where("users.name like '%mike%'")

Assuming you have users table for User model.

于 2013-08-17T14:48:27.337 回答
0

如果添加此行

has_many :posts

对于您的 User 类,应该可以通过以下查询获得您想要的内容:

User.where("name like ?", "%mike").map(&:posts)
于 2013-08-17T14:39:54.960 回答