/ / crea un nuovo genitore ma usa il bambino esistente - ruby-on-rails, ruby

crea un nuovo genitore ma usa il bambino esistente - ruby-on-rails, ruby

Ho due modelli come di seguito:

class Unit < ActiveRecord::Base
...
has_many :sites
end

class Site < ActiveRecord::Base
...
page_id
belongs_to :unit
end

Così ora mentre creo una nuova unità, voglio sempre verificare se esiste già un sito con lo stesso page_id, quindi creare solo una nuova "unità" ma utilizzare il "sito" esistente. Ma se non ci fosse Site con lo stesso page_id quindi creare una nuova unità con un nuovo sito.

risposte:

1 per risposta № 1

La soluzione più semplice che riesco a pensare è usare Rails " find_or_create_by metodo. La documentazione è Qui.

In questo modo, quando si crea un nuovo Site, potresti semplicemente fare qualcosa del genere:

u = Unit.new
u.site = Site.find_or_create_by(page_id: @page_id)

Dove @page_id è il page_id in questione.