Я использую: объединяет и: выбирает параметры, если вам нужно просто отображать данные. Я нашел очень полезным named_scope, чтобы определить все возможные: объединения и одно: select_columns named_scope.Пример
class Activity < ActiveRecord::Base
belongs_to :event
belongs_to :html_template
has_many :participants
named_scope :join_event, :joins => :event
named_scope :join_owner, :joins => {:event => :owner}
named_scope :left_join_html_template,
:joins => "LEFT JOIN html_templates ON html_templates.id = activities.html_template_id"
named_scope :select_columns, lambda { |columns| {:select => columns}}
named_scope :order, lambda{ |order| {:order => order}}
end
Итак, теперь вы можете Исли строить запросы, как это:
columns = "activities.*,events.title,events.owner_id,owners.full_name as owner_name"
@activities = Activity.join_event.join_owner.order("date_from ASC").select_columns(columns)
Я считаю, что это не самый лучший и безопасный способ, но в моем случае это действительно преуменьшать счета запрос, который выполняется для каждого запроса и пока нет ошибок, связанных с некоторыми неверными сгенерированными запросами.
Как это фактически уменьшает загрузку базы данных? Кэш-память? –