Module: Authlogic::Session::Scopes::ClassMethods
- Defined in:
- lib/authlogic/session/scopes.rb
Overview
Scopes
Instance Method Summary collapse
-
#scope ⇒ Object
The current scope set, should be used in the block passed to with_scope.
-
#with_scope(options = {}) ⇒ Object
What with_scopes focuses on is scoping the query when finding the object and the name of the cookie / session.
Instance Method Details
#scope ⇒ Object
The current scope set, should be used in the block passed to with_scope.
24 25 26 |
# File 'lib/authlogic/session/scopes.rb', line 24 def scope RequestStore.store[:authlogic_scope] end |
#with_scope(options = {}) ⇒ Object
What with_scopes focuses on is scoping the query when finding the object and the name of the cookie / session. It works very similar to ActiveRecord::Base#with_scopes. It accepts a hash with any of the following options:
-
find_options:
any options you can pass into ActiveRecord::Base.find. This is used when trying to find the record. -
id:
The id of the session, this gets merged with the real id. For information ids see the id method.
Here is how you use it:
“‘ UserSession.with_scope(find_options: “account_id = 2”, id: “account_2”) do
UserSession.find
end “‘
Essentially what the above does is scope the searching of the object with the sql you provided. So instead of:
“‘ User.where(“login = ’ben’”).first “‘
it would be:
“‘ User.where(“login = ’ben’ and account_id = 2”).first “‘
You will also notice the :id option. This works just like the id method. It scopes your cookies. So the name of your cookie will be:
account_2_user_credentials
instead of:
user_credentials
What is also nifty about scoping with an :id is that it merges your id’s. So if you do:
UserSession.with_scope(
find_options: { conditions: "account_id = 2"},
id: "account_2"
) do
session = UserSession.new
session.id = :secure
end
The name of your cookies will be:
secure_account_2_user_credentials
82 83 84 85 86 87 88 |
# File 'lib/authlogic/session/scopes.rb', line 82 def with_scope( = {}) raise ArgumentError.new("You must provide a block") unless block_given? self.scope = result = yield self.scope = nil result end |