Getting a subdomain name in model

Hi all,

I am facing problem in getting subdomain name inside the model. The
following is my setup.

I am using cancan for authorization.I wanted a specific condition in
Ability.rb ( the file which is placed in models if we install cancan
gem).

Below is the condition I wanted:

  user ||= User.new # guest user (not logged in)
  if (user.role == 'admin' && user.site_name == 

current_subdomain_name)
can :manage, :all
else
can :read, :all
end

current_subdomain_name should be the name of the subdomain on which user
is
browsing. But i could not get it.

I have tried the following was but could not succeed.

  1. setting a current_subdomain_name as a global variable in the
    application
    controller and using the global variable. (using ruby debugger i found
    that
    the global variable is having nil in it)

  2. i have a method current_subdomain_name in the application helper
    which
    returns what i wanted, I included the same inside the ability model and
    tried to use the method . But was getting error .

  3. writting a mehod in controller such that it returns what i wanted and
    use the same in the model.Still could not succeed.

Can anybody let me know how to get the subdomain from request and use it
in
the model (In Ability.rb which cancan provide).

Any help is highly appreciated.

Thanks,
Nror

Hi All,

can somebody help me on this.

–Siva

Hi
have you tried the method request.subdomain
Checkout the railscast on subdomains for more info

Bye
Rik

On Mon, Nov 28, 2011 at 9:11 AM, newrails user
[email protected]wrote:

  user ||= User.new # guest user (not logged in)

I have tried the following was but could not succeed.

See if this works

class Ability
include CanCan::Ability

def initialize(user, subdomain) #subdomain should now contain the
current
subdomain
user ||= User.new

end
end

Then in your application controller

def current_ability
@current_ability ||= Ability.new(current_user, current_subdomain_name)
end

class Ability
include CanCan::Ability

def initialize(user)
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :read, :all
end
endend


You received this message because you are subscribed to the Google G.
“Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

Jim

Thanks it worked,

–Nror