选择在

时间:2018-06-14 14:52:57

标签: sql ruby database ruby-on-rails-4

我正在构建一个使用Postgres数据库的Rails 4.2.7.1,我需要为某些用户组编写一个功能。

class User < ActiveRecord::Base
  has_many :payments
end

class Payment < ActiveRecord::Base
  belongs_to :user
end

我需要从某个位置选择只有一次付款的用户,我还需要能够选择付款created_at属性正好为x的用户

我试过

location.users
.without_deleted
.where(num_payments: 1)
.joins(:payments)
.where('payments.user_id = users.id').order('created_at 
DESC').where("payments.created_at < ?", Date.today).group('users.id')

但它没有给我预期的结果。

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该从User开始,因为这就是您想要的结果,并且因为您想要查询它而加入payments

User.joins(:payments)
    .where(location_id: location.id, num_payments: 1)
    .where(payments: { created_at: Date.today })