Прежде всего, извините, если название не очень точное.
Допустим, у меня есть следующие модели:
class User < ActiveRecord::Base
belongs_to :user_group
end
class UserGroup < ActiveRecord::Base
has_many :users
has_many :records
end
class Record < ActiveRecord::Base
belongs_to :user_group
has_many :invoices
end
class Invoice < ActiveRecord::Base
belongs_to :record
end
Я хочу получить доступ от current_user (Пользователь) квсе неоплаченные счета его группы пользователей.Примерно так:
current_user.user_group.records.invoices.where(:payment => false)
Очевидно, что приведенный выше код не работает.Самый близкий подход, который я нашел, это:
class UserGroup
def unpaid_invoices
records.map{|r| r.invoices.unpaid}
end
end
class Invoice
def self.unpaid
where(:payment => false)
end
end
И тогда я могу сделать:
current_user.user_group.unpaid_invoices
Однако это не масштабируется, потому что когда я хочу использовать новое условие,как счета на сумму, превышающие 1000 долларов, мне нужно создать два новых метода в этих моделях.
Есть какой-то магический путь для этого?Я что-то пропустил?Спасибо!