私のアプリはサブドメインに基づいています。各マネージャーは、自分のオークションのみを表示する独自のサブドメインを持っています。私は持っている:
class Lot < ActiveRecord::Base
belongs_to :auction
end
class Auction < ActiveRecord::Base
has_many :lots
belongs_to :manager
end
class manager < ActiveRecord::Base
has_many :auctions
end
アプリがサブドメインを使用してアクセスされた場合、次のことを行う before_filter があります。
def load_manager
@loaded_manager = Manager.find_by_subdomain(request.subdomain)
end
そして私のロットのdefault_scopeで、次のことをしたいと思います:
default_scope { @loaded_manager.present? ? where(deleted: false).joins(:auction => :manager).where("auctions.manager_id = ?", @loaded_manager.id) : where(deleted: false) }
そのため、ウェブサイトのどこにいても、マネージャーのオークションに属するロットのみを表示します.
問題は、モデルの @loaded_manager にアクセスできないことです。これを行うための最良の方法は何ですか?
http://railscasts.com/episodes/388-multitenancy-with-scopes?view=commentsはこの問題を解決します!