Что лучше здесь, Области 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
методы (и все, что вы добавляете).
Что меня смущает, так это то, что я могу сделать это следующими способами:
acts_as_scopeable
динамически определяет простые методы, и там я делаю какие-то обычайfind
на ассоциацииassets
, лайкassets.find(:conditions => {:scope => passed_scope}}
, Это не кажется оптимизированным, хотя.- Я мог бы также определить класс
named_scopes
который делает то, что делает #1, а затем вызывает именованную область видимости, которая только выдвигает проблему.
Каков рекомендуемый способ сделать это, или некоторые документы, которые я могу прочитать, чтобы начать. Спасибо!