条款使用少于/大于加入后的条款

时间:2017-03-01 01:59:04

标签: ruby-on-rails ruby join activerecord where-clause

我试图将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)?

2 个答案:

答案 0 :(得分:1)

我以为我之前尝试过这个,但显然这种语法有效:

import Ember from 'ember';

export default Ember.Component.extend({
  actions: {
    submit() {
      Ember.$('.modal').modal('show');
    },
  },
});

我得到了我期望的结果。

答案 1 :(得分:-1)

语法应该是:   ... .where(groups: ["vote_deadline_at <= ?",Time.now] )