Если у меня есть что-то вроде этого:
class Post < ActiveRecord::Base
has_many :comments, :as => :commentable do
def approved
find(:all, :conditions => {:approved => true})
end
end
end
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
... когда я делаю это, я получаю 2 попадания в базу данных (не считая нахождения сообщения: p):
post = Post.first
post.comments #=> [Comment1, Comment2...]
post.comments.approved #=> [Comment1, Comment7...]
Кажется, он должен просто фильтровать текущий массив комментариев в памяти, нет? Это делает это? Я спрашиваю причину, потому что консоль показывает SELECT * FROM ...
на post.comments.approved
, хотя я уже звонил post.comments
. Разве это не должно быть лучше оптимизировано в ActiveRecord?