1

我的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 :subscriptionsorder_by 无法正常工作。

例如:
如果用户有 3 个订阅(一个用于产品 X,2 个用于产品 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 时,它会拉回列表中的第一个(过期日期在过去的那个)。

抱歉,如果这没有意义,我会尽力解释它。任何人都遇到过这种情况,即订单和组在关联中无法正常工作?

4

0 回答 0