我的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时,它会拉回列表中的第一个(过去的过期日期)。
对不起,如果这没有意义,我试图尽我所能解释它。任何人遇到这种情况,订单和组在协会上工作不正常?