class Newsroom < ActiveRecord::Base
has_many :blog_posts
has_many :quote_posts
end
class BlogPost < ActiveRecord::Base
belongs_to :newsroom
end
class QuotePost < ActiveRecord::Base
belongs_to :newsroom
end
Я хотел бы иметь метод экземпляра, такой, чтобы я мог сделать @ newsroom.posts, чтобы получить коллекцию blog_posts и quote_posts, отсортированных по create_at.
def posts
@posts ||= #load and sort blog_posts, quote_posts, etc
end
Какой самый лучший и самый эффективный способ сделать это? Я рассмотрел использование default_scope, что-то вроде:
default_scope :include => [:blog_posts, :quote_posts]
def posts
@posts ||= [blog_posts + quote_posts].flatten.sort{|x,y| x.created_at <=> y.created_at}
end
Но я бы предпочел сохранить сортировку на уровне базы данных, если это возможно. Любые предложения о том, как это сделать? Благодаря.