The problem of the first solution is that "find_in_coverage |
find_known_missing" combined that way does not return a scope. It returns
two arrays each and applies | operator on the result. See:
http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-7C

I've looked arel docs (in fact, I just found poor docs). Can you please
point me where in docs is explaining how I can construct such query?

Thanks for you attention,
Gustavo


On Fri, May 18, 2012 at 3:52 PM, azizmb.in <m...@azizmb.in> wrote:

> To add to that, if you want to construct complex queries, you should have
> a look at arel <https://github.com/rails/arel>.
>
>
> On Sat, May 19, 2012 at 12:17 AM, azizmb.in <m...@azizmb.in> wrote:
>
>> AFAIK, something like this should work:
>>
>> def find_visibles
>>     find_in_coverage | find_known_missing
>> end
>>
>>
>> On Fri, May 18, 2012 at 10:53 PM, Gustavo de Sá Carvalho Honorato <
>> gustavohonor...@gmail.com> wrote:
>>
>>> Hi all!
>>>
>>> I've googled all over and I couldn't find anything about chaining scopes
>>> with OR instead of the default AND.
>>>
>>> I have an Asset model with the following scopes:
>>>
>>> class Asset < ActiveRecord::Base
>>>
>>> (...)
>>>
>>>   scope :find_in_coverage, lambda { where('timestamp(assets.found_at) >=
>>> ?', Asset.found_at_limit) }
>>>   scope :find_unknown_in_coverage, where('assets.asset_type_id IS
>>> NULL').find_in_coverage
>>>   scope :find_known_missing, lambda { where('assets.found_at < ? AND
>>> assets.asset_type_id IS NOT NULL', Asset.found_at_limit) }
>>>
>>> end
>>>
>>> I would like to create another scope ("find_visibles") which is the OR
>>> of "find_in_coverage" and "find_known_missing" scopes, like that:
>>>
>>> scope :find_visibles, find_in_coverage.find_know_missing
>>>
>>> The problem is that this method chain uses AND to concatenate WHERE
>>> clauses. I need this clauses to be concatenated using OR instead.
>>>
>>> How can I do that?
>>>
>>> Thanks in advance,
>>> Gustavo Honorato
>>>
>>> --
>>> 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+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/rubyonrails-talk?hl=en.
>>>
>>
>>
>>
>> --
>> - Aziz M. Bookwala
>>
>> Website <http://azizmb.in/> | Twitter <https://twitter.com/azizbookwala>
>>  | Github <http://github.com/azizmb>
>>
>>
>
>
> --
> - Aziz M. Bookwala
>
> Website <http://azizmb.in/> | Twitter <https://twitter.com/azizbookwala>
>  | Github <http://github.com/azizmb>
>
>  --
> 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+unsubscr...@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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to