Что лучше здесь, Области Rails Association или Just SQL?

Я не совсем уверен, что делать здесь, вот ситуация:

Учитывая эти модели...

class Post < ActiveRecord::Base
  has_many :post_assets
  has_many :assets, :through => :post_assets

  acts_as_scopeable :assets, :scopes => [:featured]
end

class PostAssets < ActiveRecord::Base
  belongs_to :post
  belongs_to :asset

  # context is so we know the scope or role
  # the join plays
  validates_presences_of :context
end

class Asset < ActiveRecord::Base
  has_many :post_assets
  has_many :posts, :through => :post_assets
end

Как мне сделать так, чтобы я мог сделать что-то вроде этого:

post = Post.create!(:title => "Post Title")
asset = Asset.create!(:title => "An Asset", :context => "featured")
post.assets << asset
post.reload
post.featured_assets #=> [#<Asset id: 1, title: "An Asset", created_at: "2010-06-20 16:30:51", updated_at: "2010-06-20 16:30:51">]

Предположим, acts_as_scopeable Метод просто динамически определяет featured_assets методы (и все, что вы добавляете).

Что меня смущает, так это то, что я могу сделать это следующими способами:

  1. acts_as_scopeable динамически определяет простые методы, и там я делаю какие-то обычай find на ассоциации assets, лайк assets.find(:conditions => {:scope => passed_scope}}, Это не кажется оптимизированным, хотя.
  2. Я мог бы также определить класс named_scopes который делает то, что делает #1, а затем вызывает именованную область видимости, которая только выдвигает проблему.

Каков рекомендуемый способ сделать это, или некоторые документы, которые я могу прочитать, чтобы начать. Спасибо!

0 ответов

Другие вопросы по тегам