J'ai une classe de propriétaire et de commentaire. Propriétaire a 1: N commentaires. Lorsqu'un propriétaire est créé, il crée un commentaire sur le même formulaire (imbriqué).Rails vérifiant db pour un utilisateur déjà existant et ajouter un commentaire sans créer un nouvel utilisateur
Lorsque le formulaire est envoyé, la commande users_controller # create est appelée.
Je veux vérifier la base de données si le propriétaire avec le même nom, la même ville et le même État existe déjà et ajouter le commentaire à ce propriétaire au lieu d'en créer un nouveau.
def create
#check if a landlord of the same name already exists and add comments to that
if Landlord.find_by_name(params[:name]) && Landlord.find_by_city(params[:city])&& Landlord.find_by_province(params[:province])
@landlord_exists = Landlord.find_by_name(params[:name]) && Landlord.find_by_city(params[:city])&& Landlord.find_by_province(params[:province])
@landlord_exists.comments.build
@landlord_exists.comments[0].setIP request.remote_ip
@landlord_exists.save
else
@landlord = Landlord.new(params[:landlord])
@landlord.comments[0].setIP request.remote_ip
if @landlord.save
flash[:success] = "Thank you for submitting a Landlord"
redirect_to landlords_path
else
end
end
end
mise à jour # 1 jusqu'à
def create
@landlord = Landlord.where(:name => params[:name], :city => params[:city], :province => params[:province]).first_or_create!
@landlord.comments[0].setIP request.remote_ip
if @landlord.save
redirect_to landlords_path
else
end
end
La ligne
@landlord = Landlord.where(:name => params[:name], :city => params[:city], :province => params[:province]).first_or_create!
semble être retourner un objet nul mettant ainsi des erreurs lors SETIP est appelée. Qu'est-ce qui causerait cela? Je l'ai essayé dans le terminal et ça a bien fonctionné même si j'utilisais des valeurs codées en dur.
Alors, quelle est votre question? Votre code ne fonctionne pas? Quelles erreurs jette-t-il? – depa