Если вы просто хотите получить записи, почему бы не использовать команду #delegate
? Это работает просто отлично, по крайней мере, в сценарии, который вы описали.
class User < ActiveRecord::Base
has_one :provider
delegate :bids, :to => :provider
end
class Provider < ActiveRecord::Base
has_many :businesses
has_many :bids, :through => :businesses
belongs_to :user
end
class Business < ActiveRecord::Base
has_many :bids
belongs_to :provider
end
class Bid < ActiveRecord::Base
belongs_to :business
end
Хотя, по моему не столь скромному мнению, вы должны просто объединить методы в цепочку, потому что это более просто, и вы больше не добьетесь повышения производительности, если не будете использовать какой-то сумасшедший пользовательский SQL, как говорит Тадман.