Rails 3, has_one / has_many с лямбда-условием

Вот мои модели:

class User < ActiveRecord::Base
  has_many :bookmarks
end

class Topic < ActiveRecord::Base
  has_many :bookmarks
end

class Bookmark < ActiveRecord::Base
  belongs_to :user
  belongs_to :topic
  attr_accessible :position
  validates_uniqueness_of :user_id, :scope => :topic_id
end

Я хочу получить всеtopics с, дляcurrent_user, связанныйbookmark, Банкомат я делаю:

Topic.all.each do |t|
    bookmark = t.bookmarks.where(user_id: current_user.id).last
    puts bookmark.position if bookmark
    puts t.name
end

Это некрасиво и делает слишком много запросов к БД. Я хотел бы что-то вроде этого:

class Topic < ActiveRecord::Base
  has_one :bookmark, :conditions => lambda {|u| "bookmarks.user_id = #{u.id}"}
end

Topic.includes(:bookmark, current_user).all.each do |t| # this must also includes topics without bookmark
    puts t.bookmark.position if t.bookmark
    puts t.name
end

Это возможно? Есть ли у меня альтернатива?

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос