我正在构建一个使用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')
但它没有给我预期的结果。
谢谢!
答案 0 :(得分:0)
您应该从User
开始,因为这就是您想要的结果,并且因为您想要查询它而加入payments
。
User.joins(:payments)
.where(location_id: location.id, num_payments: 1)
.where(payments: { created_at: Date.today })