I make objects in controller's loop.
I need to check pet_name array before loop starts. (because i got undefined method 'each' for nil:NilClass
when params[:pet_name].each do |pid|)
runs)
But my validation always called after User.new or User.create. I want to change to validate as when i push submit button and check validation, and redirects back when pet_name array is nil. Ho can i change my code?
Controller
def create
user_name = params[:user_name]
params[:pet_name].each do |pid|
@user = User.new
@user.name = user_name
@user.pet_name = pid
render :new unless @user.save
end
redirect_to users_path
end
User.rb
class User < ApplicationRecord
has_many :pet
validates :name, presence: true
validates :pet_name, presence: true
validate :check_pet
def check_pet
if pet_name.nil?
errors.add(:pet_name, 'at least one pet id')
end
end
end
Prams structure
{ name: 'blabla', pet_name: ['blabla', 'blablabla', 'bla'] }
Aucun commentaire:
Enregistrer un commentaire