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.

