我有以下型號:骨料的has_many與其他的has_many的Rails
class User < ActiveRecord::Base
has_many :subscriptions, as: :subscribable
has_many :user_to_high_school_subscriptions
has_many :high_school_subscriptions, through: :user_to_high_school_subscriptions
def all_subscriptions
self.subscriptions + self.high_school_subscriptions.subscriptions
end
end
class UserToHighSchoolSubscription < ActiveRecord::Base
belongs_to :user
belongs_to :high_school_subscription
end
class HighSchoolSubscription < ActiveRecord::Base
has_many :user_to_high_school_subscriptions
has_many :users, through: :user_to_high_school_subscriptions
has_many :subscriptions, as: :subscribable
end
class Subscription < ActiveRecord::Base
belongs_to :subscribable, polymorphic: true
end
有我讓所有Subscription
s表示一個User
有一個聰明的辦法。
我試圖
u = User.first
subs = u.all_subscriptions
但被示數出(undefined method subscriptions' for #<ActiveRecord::Relation:
)。當我嘗試使用HighSchoolSubscription
上的has_many :subscriptions
時,我認爲這是窒息,因爲user
has_many :high_school_subscriptions
。 (此行:self.high_school_subscriptions.subscriptions
)。
有沒有辦法在Rails中has_many上聚合has_many?
運行軌道3.2.1
'flatten'方法非常有用。謝謝 –