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.
