2013-04-09 21 views
1

我有这些模型:Rails数据库查询与两个表的条​​件?

class Post 
    belongs_to :user 
end 

class User 
    has_many :posts 
end 

我想任何访客用户获得与标题“有些题目”的帖子(即user.role ==“客人”)。

该标题在访客用户中是唯一的,但某些非访客用户有可能拥有该职位的职位。我试图使用Rails guideApi,但我似乎无法将正确的语法放在一起。

我希望那是为User.where(:role => 'guest').posts.find_by_title('some title')一样简单,但会因#ActiveRecord ::关系未定义的方法`帖:0x4e6d380

Post.find_by_title('some title', :conditions => {:users => {:role => 'guest'}, :joins => :users}抛出PG ::错误:错误:缺少表“用户”的FROM-clause条目。

任何与Post.joins(:users)抛出未找到名为“用户”的关联。

回答

1

尝试连接上的Post.joins(:user)(not:users)。

+0

啊!我明白现在它是如何工作的。因为一个帖子只属于一个用户,所以:用户应该是单数。如果我想要User.joins(:posts),那么:由于用户has_many帖子,帖子将是复数形式。 – lala 2013-04-09 18:59:29

2

阅读关于使用ActiveRecord方法.joins,生成SQL joins

User.joins(:posts).where("users.role = ? AND posts.title = ?", 'guest', 'some title')