J'étais accro à la sauvegarde du modèle lors de la création du portfolio. J'en ai pris note car il a été résolu en utilisant une gemme appelée "pry-rails".
J'ai créé le code et la méthode suivants.
records_controller.rb
class User::RecordsController < User::Base
##Omission...
def create
@record = current_app_user.records.build(record_params)
if @record.save
flash[:success] = 'Entré avec succès'
redirect_to user_root_url
else
flash.now[:danger] = 'N'a pas réussi à entrer'
render :new
end
end
##Omission...
private def record_params
params.require(:record).permit(
:material,
:study_date,
:study_hour,
:study_minute,
:memo,
)
end
end
Nom du modèle: record Les colonnes sont les suivantes.
["id", :integer]
["material", :string] #Je veux mettre du matériel pédagogique
["study_date", :date] #Je veux mettre une date
["study_hour", :integer] #Je veux mettre du temps d'étude
["study_minute", :integer] #Je veux mettre du temps d'étude (minute)
["memo", :string] #Je veux mettre un mémo
["app_user_id", :integer]
["created_at", :datetime]
["updated_at", :datetime]
Ajout de ce qui suit au Gemfile
Gemfile.
group :development, :test do
gem 'pry-rails'
end
Installation groupée dans le terminal
$bundle install
Ajouté à Create Method
records_controller.rb
class User::RecordsController < User::Base
##Omission...
def create
binding.pry #Ajoutez celui-ci! !!
@record = current_app_user.records.build(record_params)
if @record.save
##Omission...
Ensuite, essayez de sauvegarder. Ensuite, l'interface graphique passe en état de veille Le fonctionnement en ligne de commande est possible sur le terminal. L'écran ci-dessous s'affiche.
From: /apps/study-meter/app/controllers/user/records_controller.rb:20 User::RecordsController#create:
19: def create
=> 20: binding.pry
21: @record = Record.new(record_params)
22: if @record.save
23: flash[:success] = 'Entré avec succès'
24: redirect_to user_root
25: else
26: flash.now[:danger] = 'N'a pas réussi à entrer'
27: render :new
28: end
29: end
[1] pry(#<User::RecordsController>)>
Entrez maintenant les paramètres. Puis
[1] pry(#<User::RecordsController>)> params
=> <ActionController::Parameters {"authenticity_token"=>"y5Y+hutJRPbyX9VM0lpiIax4hfeF5TXoykVL35fLQV727TmH/+/f/qncyRtDaANL1h5kqIOErcrGRhfCYuYCKg==", "record"=>{"study_date"=>"2020-07-14", "memo"=>"Histoire japonaise", "study_hour"=>"0", "study_minute"=>"3"}, "commit"=>"Publier", "host"=>"study-meter.com", "controller"=>"user/records", "action"=>"create"} permitted: false>
Si vous regardez cela, vous pouvez voir quelle valeur vous essayiez de mettre dans quelle colonne. J'essayais de mettre un mémo dans la colonne "mémo", et j'essayais de mettre "l'histoire du Japon" dans la colonne matérielle.
Même ainsi, il y a une histoire japonaise dans la colonne mémo, et il n'y a pas d'entrée dans la colonne matériel en premier lieu. Là, je remarque que c'est "drôle".
Parce que le matériau avait une contrainte non nulle "Le matériel n'est pas bon avec nul, mais qu'est-ce que cela signifie d'essayer de le sauver comme nul?" La sauvegarde n'a probablement pas fonctionné.
・ La méthode devrait être correcte -Colonne non intentionnelle Vous essayez d'entrer une colonne non souhaitée
À partir de là, j'ai pu découvrir que la manière d'écrire le formulaire de vue est étrange. Effectivement, le code là-bas était étrange, alors je l'ai corrigé et résolu.
pry-rails était une bibliothèque très utile pour identifier la cause d'une erreur.