Ruby on Rails Thursday, May 31, 2012

Nice, I forgot about that too...

On Thu, May 31, 2012 at 2:26 PM, Mohamad El-Husseini
<husseini.mel@gmail.com> wrote:
> 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
>>> <husseini.mel@gmail.com> 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 rubyonrails-talk@googlegroups.com.
>>> > To unsubscribe from this group, send email to
>>> > rubyonrails-talk+unsubscribe@googlegroups.com.
>>> > 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 rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> 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 post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment