I forgot to mention that where() returns an array where as find_by_foo returns a single object unless there are multiple objects...
----- 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:25:49 PM UTC-4, Mohamad El-Husseini wrote: > > 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/-/o9ZLULIE9hoJ. 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.

