2017-03-01 84 views
2

我試圖合併joinswhere子句,但where子句沒有測試相等性,它測試的是大於或等於。哪裏子句少於/大於加入

我知道在一個標準的where子句,我可以做到這一點:

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

查找其投票的截止日期是在未來的所有組。

但是,如果這是一個joins後來臨的時候,是這樣的:

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}) 

一切到最後where(groups: {"vote_deadline_at <= ?",Time.now})子句工作正常。它返回一個186行的ActiveRecord集合。然而,當我在最後加上where條款,我得到的錯誤:

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

有沒有辦法與只選擇行的where子句進一步篩選我的結果,其中groups.vote_deadline_at是未來(即小於或等於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])