Another way would be to change:

roles = user.roles.find_by_account_id(account.id)

to

roles = user.roles.where(account_id: account.id)

On Thursday, May 31, 2012 1:22:42 PM UTC-4, Everaldo Gomes wrote:
>
> Hi! 
>
> There are many ways to solve this problem. 
>
> One sugestion, maybe not the better: you can use the method kind_of? 
> to see if roles is a Array. 
>
> roles.kind_of? Array 
> (will return true) 
>
> Then, you could build your logic upon this. 
>
> Best Regards, 
> Everaldo 
>
> On Thu, May 31, 2012 at 2:04 PM, Mohamad El-Husseini 
> <[email protected]> wrote: 
> > I'm trying to use CanCan to an account scoped application. I wrote this 
> > method in my ability class: 
> > 
> >     roles = user.roles.find_by_account_id(account.id) 
> >     if roles.any? { |role| role.type == "Ownership" } 
> >       can :edit, Account 
> >     else 
> >       can :read, :all 
> >     end 
> > 
> > The trouble is, "any?" works when "roles" is an array. Sometimes, 
> however, 
> > user.roles returns only one object any other times my return nil. So 
> calling 
> > roles.any? causes an error. How do I work around this? 
> > 
> > My setup is User has_many Accounts through :roles, and vice-versa. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "Ruby on Rails: Talk" group. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/rubyonrails-talk/-/mORQoYLqDtwJ. 
> > 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. 
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/25k2ylUlcSsJ.
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.

Reply via email to