Active Record查询RoR双重条件

时间:2014-03-07 17:12:15

标签: sql ruby-on-rails activerecord

我的RoR应用程序上有以下架构/关系

|Merchant| (1-->n) |Credit      | (n-->1) |User          | (1-->1) |Merchant   |
|--------|         |------------|         |--------------|         |-----------|
|id      |         | user_id    |         |id            |         |id         |
|Name    |         |merchant_id |         |merchant_id   |         |Name       |
                                          |isMerchantUser|

假设您以商家用户身份登录,作为商家用户,您应该只能看到与您的商家匹配的商家ID。当您转到用户个人资料页面时,您希望显示授予用户的所有与您的User.merchant_id相关的信用

考虑以下因素: - 认证系统:设计。您可以使用current_user方法 - 查询放在用户#index controller

以下查询仅用于显示登录的商家用户提供的信用,但如果我转到用户个人资料页面,我想限制只显示给该用户的信用。

@credits = Credit.find(:all,:conditions=>{:merchant_id => current_user.merchant_id(&:merchant_id)})

我正在尝试做这样的事情......

@credits = Credit.where(merchant_id = current_user.merchant_id)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

知道了!

这就是我所做的:

用户#index控制器

@user = Credit.where(:merchant_id => current_user.merchant_id).group(:user_id).sum(:amount)

因此,我获得了与该商家具有关联信用的用户,按用户对记录进行分组,并获得给予该用户的金额总和。