Ah, good to know. Works now. Thank you very much for the quick answer!

Am Freitag, 31. Mai 2019 17:13:31 UTC+2 schrieb Jeremy Evans:
>
> On Friday, May 31, 2019 at 7:57:59 AM UTC-7, JB wrote:
>>
>> Hello, I'm new to Sequel, so please excuse my maybe simple question. 
>>
>> I want to set up a many to many association. When adding such an 
>> association, it leads to a UNIQUE constraint violation. It seems like I 
>> miss something here. Maybe you could help me, please? I have the following 
>> code (simplified):
>>
>> --------------------------------- tables ---------------------------------
>>
>> db.create_table? :tickets do
>>       primary_key   :id
>>       String            :key
>>       String            :ticket_type_name
>>       String            :priority
>> end
>>
>> db.create_table? :editors do
>>       Integer           :employee_number, primary_key: true
>>       String            :name
>> end
>>
>> db.create_table?  :tickets_editors do
>>       foreign_key   :ticket_id, :tickets
>>       foreign_key   :editor_id, :editors
>>       primary_key  [:ticket_id, :editor_id]
>> end
>>
>> --------------------------------- models ---------------------------------
>> class Ticket < Sequel::Model
>>       many_to_many :editors
>> end 
>>
>> class Editor < Sequel::Model
>>       many_to_many :tickets
>>       unrestrict_primary_key
>> end 
>>
>>
>> # I'm retrieving data from an API, create for every ticket a *ticket 
>> *instance 
>> and also an *editor *variable which is a hash containing the values to 
>> add
>>
>> # [each loop:]
>> *ticket*.add_editor(*editor*)
>>
>
> When the add_* association method is called with a hash, it always creates 
> an object in the associated table.  If you want it to use an existing row 
> in the editor table if it exists:
>
> if e = Editor[editor[:employee_number]]
>   ticket.add_editor(e)
> else
>   ticket.add_editor(editor)
> end
>
> Thanks,
> Jeremy
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/4fb9707e-c645-4b7b-aa56-7d445ac6882e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to