/ / crée un nouveau parent mais utilise un enfant existant - ruby-on-rails, ruby

créer un nouveau parent mais utiliser un enfant existant - ruby-on-rails, ruby

J'ai deux modèles comme ci-dessous:

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

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

Alors maintenant, lors de la création d'une nouvelle unité, je veux toujours vérifier si un site avec le même identifiant de page existe déjà, créez uniquement une nouvelle "Unité" mais utilisez le "Site" existant. Mais s'il n'y avait pas Site avec le même page_id puis créez une nouvelle unité avec un nouveau site.

Réponses:

1 pour la réponse № 1

La solution la plus simple à laquelle je puisse penser utilise Rails " find_or_create_by méthode. La documentation est ici.

De cette façon, lors de la création d’un nouveau Site, vous pouvez simplement faire quelque chose comme ceci:

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

@page_id est le page_id en question.