Anyone?

2011/4/21 Israel Ben Guilherme Fonseca <israel....@gmail.com>

> No, its indeed professores, its in portuguese. Not the english word
> professors.
>
> The datamapper naming conventions dont work well with foreign models. :P
>
>
> 2011/4/21 simonhn <simo...@gmail.com>
>
>> Are you spelling professors wrong in the second line below? Seems like
>> you have an 'e' too many.
>>
>> Array.new Disciplina.all(Disciplina.professor_disciplinas.professor.id
>> => 1 )
>> Array.new Disciplina.all(Disciplina.professores.id => 1 )
>>
>> On Apr 21, 12:02 am, Israel Ben Guilherme Fonseca
>> <israel....@gmail.com> wrote:
>> > Can you be a bit more specific? I didnt get which child_key are you
>> talking
>> > about (there's a plenty of them :))
>> >
>> > 2011/4/20 Jonathan Stott <jonathan.st...@gmail.com>
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > > I'm not sure if this fixes the problem or not, but:
>> >
>> > > The :child_key is the child_key property, not the :child_key
>> > > property's field name.
>> >
>> > > Regards
>> > > Jon
>> >
>> > > On 20 April 2011 14:34, Israel Ben Guilherme Fonseca
>> > > <israel....@gmail.com> wrote:
>> > > > Hi everybody,
>> >
>> > > > I'm getting a problem with the many-to-many through relationship. I
>> made
>> > > the
>> > > > "normal" version and the "through" version, and I thought that I
>> would
>> > > get
>> > > > the same result, and thats not happening.
>> >
>> > > > Array.new Disciplina.all(
>> Disciplina.professor_disciplinas.professor.id=> 1
>> > > > )
>> >
>> > > > Array.new Disciplina.all(Disciplina.professores.id => 1 )
>> >
>> > > > These instructions should mean the same, and make the same (or
>> almost)
>> > > SQL.
>> >
>> > > > That's my code:
>> >
>> > > > #TABLES:
>> > > > #
>> > > > #disciplina
>> >
>> > > > #    id_disciplina,
>> > > > #    nome
>> >
>> > > > #professor
>> > > > #    id_professor
>> > > > #
>> > > > #professor_disciplina
>> >
>> > > > #    id_professor
>> > > > #    id_disciplina
>> >
>> > > > class Disciplina
>> > > >     include DataMapper::Resource
>> >
>> > > >     storage_names[:default] = "disciplina"
>> >
>> > > >     property :id,            Serial, :field => 'id_disciplina'
>> >
>> > > >     property :nome,          String
>> >
>> > > >     has n, :professor_disciplinas, 'ProfessorDisciplina', :child_key
>> => [
>> > > > :id_disciplina ]
>> >
>> > > >     has n, :professores, 'Professor', :through =>
>> :professor_disciplinas,
>> > > > :via => :professor
>> >
>> > > > end
>> >
>> > > > class Professor
>> > > >     include DataMapper::Resource
>> >
>> > > >     storage_names[:default] = "professor"
>> >
>> > > >     property :id,            Serial, :field => 'id_professor'
>> >
>> > > >     has n, :professor_disciplinas, 'ProfessorDisciplina', :child_key
>> => [
>> > > > :id_professor ]
>> >
>> > > >     has n, :disciplinas, :through => :professor_disciplinas
>> >
>> > > > end
>> >
>> > > > class ProfessorDisciplina
>> > > >         include DataMapper::Resource
>> >
>> > > >         storage_names[:default] = "professor_disciplina"
>> > > >         belongs_to :professor ,  'Professor' , :child_key => [
>> > > :id_professor
>> > > > ], :key => true
>> >
>> > > >         belongs_to :disciplina,  'Disciplina', :child_key => [
>> > > > :id_disciplina ], :key => true
>> >
>> > > > end
>> >
>> > > > # Nice SQL
>> > > > Array.new Disciplina.all(
>> Disciplina.professor_disciplinas.professor.id=> 1
>> > > > )
>> >
>> > > > # Bad SQL (database error and weird stuff)
>> > > > Array.new Disciplina.all(Disciplina.professores.id => 1 )
>> >
>> > > > The generated SQL for each instruction:
>> >
>> > > > -- Nice SQL
>> > > > SELECT "disciplina"."id_disciplina", "disciplina"."nome"
>> > > > FROM "disciplina"
>> > > > INNER JOIN "professor_disciplina" ON "disciplina"."id_disciplina" =
>> > > > "professor_disciplina"."id_disciplina"
>> > > > INNER JOIN "professor" ON "professor_disciplina"."id_professor" =
>> > > > "professor"."id_professor"
>> > > > WHERE "professor"."id_professor" = 1
>> > > > GROUP BY "disciplina"."id_disciplina", "disciplina"."nome" ORDER BY
>> > > > "disciplina"."id_disciplina"
>> >
>> > > > -- Bad SQL
>> > > > SELECT "disciplina"."id_disciplina", "disciplina"."nome"
>> > > > FROM "disciplina"
>> > > > INNER JOIN "professor_disciplina" ON "disciplina"."id_professor" =
>> > > > "professor_disciplina"."id_professor" -- should be
>> > > disciplina.id_disciplina
>> > > > INNER JOIN "professor_disciplina" "professor_disciplina_1" ON
>> > > > "professor_disciplina"."id_disciplina" =
>> > > > "professor_disciplina_1"."id_disciplina" -- why another join?
>> > > > INNER JOIN "professor" ON "professor_disciplina_1"."id_professor" =
>> > > > "professor"."id_professor"
>> > > > WHERE "professor"."id_professor" = 1
>> > > > GROUP BY "disciplina"."id_disciplina", "disciplina"."nome"
>> > > > ORDER BY "disciplina"."id_disciplina"
>> >
>> > > > The bad SQL got a weird join and is using a wrong id.
>> >
>> > > > What am I doing wrong? I think that maybe it's something with the
>> :via
>> > > > option.
>> >
>> > > > Thanks in advance,
>> >
>> > > > ------------------------------------------------------
>> > > > Syntax Highlighted version of the code:
>> >
>> > > > Ruby Code
>> > > >http://dpaste.com/533933/
>> >
>> > > > Generated SQL
>> > > >http://dpaste.com/533934/
>> >
>> > > > --
>> > > > You received this message because you are subscribed to the Google
>> Groups
>> > > > "DataMapper" group.
>> > > > To post to this group, send email to datamapper@googlegroups.com.
>> > > > To unsubscribe from this group, send email to
>> > > > datamapper+unsubscr...@googlegroups.com.
>> > > > 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 datamapper@googlegroups.com.
>> > > To unsubscribe from this group, send email to
>> > > datamapper+unsubscr...@googlegroups.com.
>> > > 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 datamapper@googlegroups.com.
>> To unsubscribe from this group, send email to
>> datamapper+unsubscr...@googlegroups.com.
>> 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 datamapper@googlegroups.com.
> To unsubscribe from this group, send email to
> datamapper+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/datamapper?hl=en.
>



-- 
Jean Michel Baldessar
Msn: jean.baldes...@gmail.com
9976-4691

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to datamapper@googlegroups.com.
To unsubscribe from this group, send email to 
datamapper+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en.

Reply via email to