Rails 3 has_many order_by和group_by没有按预期工作

时间:2012-10-18 15:54:11

标签: ruby-on-rails-3 activerecord group-by sql-order-by

我的Group模型中有以下关联:

has_many :subscriptions, :order => 'subscriptions.expiration_date DESC', :group => 'subscriptions.product_name', :conditions => ['subscriptions.status IN (?)', [:active, :canceled]]

模型(用户,订阅,组)分解如下:

**User**
has_many :groups, :before_add => :validates_group, :through => :group_users, :conditions => ["groups_users.status = ?", 'active']
**Group**
has_many :users, :through => :group_users, :conditions => ['groups_users.status = ?', 'active']
has_many :subscriptions, :order => 'subscriptions.expiration_date DESC', :group => 'subscriptions.product_name', :conditions => ['subscriptions.status IN (?)', [:active, :canceled]]
**Subscription**
belongs_to :group

因此,一个组可以为同一产品进行多次订阅(针对不同的产品; subscription.product_name)(取决于他们是否续订或者它只是系统中的旧订阅)。 has_many :subscriptions order_by无法正常运行。

例如:
如果用户有3个订阅(一个用于产品X,另一个用于产品Y)。然后运行以下

用户模型中的订阅方法:

 def subscriptions
    subs = []
    groups.collect(&:subscriptions).each do |sub|
      if sub
        subs << sub
      end
    end
    subs.flatten!
  end

u = User.last
u.subscriptions

产品X的产品返回正常,但当它拉回产品Y时,它会拉回列表中的第一个(过去的过期日期)。

对不起,如果这没有意义,我试图尽我所能解释它。任何人遇到这种情况,订单和组在协会上工作不正常?

0 个答案:

没有答案