I mean I did not get far trying to fix the issue myself

On Dec 31, 11:07 am, Adam Medveczky <[email protected]> wrote:
> I have opened an issue for 
> this:https://github.com/datamapper/dm-do-adapter/issues/11
>
> Unfortunately I'm just learning ruby as well, DM internals are a bit
> of mistery for me, so I did not get far.
>
> Sentence_Words is generated automatically even if ':through =>
> Resource' is specified, so without modificating the original code this
> workaround is OK:
>
> Sentence.all(:sentence_words => { :word_id => Word.first(:fields =>
> [:id], :word => "Hello").id} )
>
> On Dec 30, 1:05 am, Chris Corbyn <[email protected]> wrote:
>
>
>
>
>
>
>
> > Ugh, this looks pretty horrible.  I think we ran into a similar bug where 
> > DataObjectsAdapter's join logic was using back-to-front keys in 
> > many-to-many associations.  I remember chiming into the #datamapper channel 
> > at the time but don't recall what the outcome was (I think nobody was 
> > around).
>
> > The logic in DataObjectsAdapter is definitely back-to-front, but changing 
> > it seems to break other things.  From memory it was changed to be 
> > back-to-front at some point, presumably to "fix" some other obscure bug.
>
> > Hopefully somebody takes a look at this, as we'll certainly also run into 
> > it.
>
> > In the interim, you may wish to try using an explicit join model (i.e. has 
> > n, :sentence_words on each model, then has n, :sentences, :through => 
> > :sentence_words).
>
> > On 30/12/2011, at 6:50 AM, Adam Medveczky wrote:
>
> > > Hi!
>
> > > If I have 2 models (Sentence, Word), which have a Many-to-Many
> > > relationship, and Word has a field 'word', the following query:
>
> > > Sentence.all(:words => { :word => "Hello" })
>
> > > Tries to match "sentences.id" to "words.id" (live example at
> > >http://pastebin.ca/2097242) :
>
> > > SELECT "id", "text", "book_id"
> > > FROM "sentences"
> > > WHERE "id" IN
> > >    (SELECT "words"."id"    # Query result will be a single words.id,
> > > which will be used as sentence id
> > >     FROM "words"
> > >     INNER JOIN "sentence_words" ON "words"."id" =
> > > "sentence_words"."word_id"
> > >     INNER JOIN "sentences" ON "sentence_words"."sentence_id" =
> > > "sentences"."id"
> > >     WHERE "words"."word" = 'Hello')
> > > ORDER BY "id"
>
> > > Note that I haven't even heard of DataMapper until today, so I might
> > > doing something bad, but this seems to be definiately wrong (the inner
> > > query should be SELECT "sentences"."id" FROM "words" INNER JOIN...).
>
> > > Thanks!
>
> > > Adam
>
> > > --
> > > 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 
> > > athttp://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