2017-03-01 3 views
2

joinswhere句を組み合わせようとしていますが、where句は等しいかどうかをテストしていません。ここでは、結合後の/より小さい句

私は句が、私はこれを行うことができ、標準的に知っている:

Group.where("vote_deadline_at <= ?", Time.now) 

は、その投票締め切り未来にあるすべてのグループを見つけること。

しかし、何本かのことは、このように、joins後に来る:最終where(groups: {"vote_deadline_at <= ?",Time.now})句まで

User.likes.where(liked_type: "Post").joins("INNER JOIN posts ON posts.id = liked_id").where(posts: {context_type:"Group"}).joins("INNER JOIN groups ON groups.id = posts.context_id").where(groups: {"vote_deadline_at <= ?",Time.now}) 

すべてが正常に動作します。これは、186行のActiveRecordコレクションを返します。私は最終的where句を追加する場合しかし、私はエラーを取得する:

SyntaxError: unexpected '}', expecting end-of-input 
...ote_deadline_at <= ?",Time.now}) 

はさらにgroups.vote_deadline_atが将来的にある行のみを選択してwhere句(すなわち以下に私の結果をフィルタリングする方法はありますTime.nowと等しい)?

答えて

0

私は前にこれを試してみましたと思ったが、どうやらこの構文は動作します:

u.likes.where(liked_type: "Post").joins("INNER JOIN posts ON posts.id = liked_id").where(posts: {context_type:"Group"}).joins("INNER JOIN groups ON groups.id = posts.context_id").where("groups.vote_deadline_at <= ?",Time.now) 

私は私が期待される正確な結果を得ました。

0

構文は次のとおりです。 ... .where(groups: ["vote_deadline_at <= ?",Time.now])

関連する問題