Just posting progress on this:

Inheriting from AbstractComparison registers (see self.inherited) my custom
comparison and it's slug is then listen between the Comparison.slugs.

But my call

Person.all(:name.bw => 'Serg')


...still fails: undefined method `bw' for :name:Symbol.
Any hints?

S.


On 30 July 2010 17:32, Sergio Lombrico <[email protected]> wrote:

> Hi Ted. Thanks for your replying!
>
> I am actually not trying to do anything exceptional. Just considering
> writing my own datamapper adapter for tokyo tyrant and I would like to use
> the same operators that come with TT's API.
>
> For example:
>
> QCSTREW - query condition: string ends with
>
> which I'd like to make available as 'ew'.
>
> A few things are not clear to me. Basically, one can create a new
> comparison operator as follows.
>
> class MyComparison < AbstractComparison
>   slug :exactend
>
>
> What do you exactly mean by "register your new comparison class and it's
> slug with DataMapper::Query::Comparison" ?
>
> Thanks for your help.
>
> Sergio
>
> On 30 July 2010 15:43, Ted Han <[email protected]> wrote:
>
>> Hey sergio,
>>
>> First things first, the symbol extensions (e.g. :thing.gte) are
>> deprecated, and we encourage people not to use them.  My personal choice is
>> to use the string syntax ("name.eq" => "ted").
>>
>> Secondly, if you pop open dm-core, all of the query comparison are classes
>> which can be found inside of dm-core/lib/query/conditions/comparisons.rb
>>
>> So long as you register your new comparison class and it's slug with
>> DataMapper::Query::Comparison, then all of DataMapper's query machinery
>> should automatically translate query conditions correctly, and instantiate
>> your conditions.
>>
>> HOWEVER, you will need to inform things like the DataMapper DataObjects
>> Adapter how it should transform your Comparison class into SQL if you are
>> using dm-do-adapter (or it's descendants).  And to see about doing that you
>> should look at the comparison_statement method and the comparison_operator
>> methods in the dm-do-adapter.
>>
>> Out of curiosity what operation are you looking to add?
>>
>> -Ted
>>
>> On Fri, Jul 30, 2010 at 7:36 AM, sergio <[email protected]>wrote:
>>
>>> Hi all.
>>>
>>> I am looking for a way to introduce a new type of query operator.
>>> Let's imagine I have a new operator called 'op', then I'd like to be
>>> able to write a query as
>>>
>>> Person.all(:name.op => 'something')
>>>
>>> Any hints ?
>>>
>>> Cheers,
>>>
>>> Sergio
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "DataMapper" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<datamapper%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/datamapper?hl=en.
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "DataMapper" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<datamapper%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/datamapper?hl=en.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
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/datamapper?hl=en.

Reply via email to