我的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,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 时,它会拉回列表中的第一个(过期日期在过去的那个)。
抱歉,如果这没有意义,我会尽力解释它。任何人都遇到过这种情况,即订单和组在关联中无法正常工作?