Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@hacchi56

【Rails】ユーザー登録機能が動作しない

More than 1 year has passed since last update.

開始タグ

ユーザー登録実装中に、データベースに登録できなくて詰まったのでメモ。

道中

色々な参考サイトを探してみるも明確な答えにたどり着けず、とりあえず「ry-byebug」のgemでデバッグして見た。

  def create
    @user = User.new(name: params[:name], pass: params[:pass])
    @user.save
    binding.pry
    redirect_to("/dashboard/index")
  end

すると以下のエラーが。

Started POST "/users/create" for 172.21.0.1 at 2019-10-20 13:31:02 +0000
Cannot render console from 172.21.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by UsersController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"AGAzaEa5VNEyv9sRn/kzQORFEDBs8CsBuxAPeH+7xB8ZM/qOfevgOKQLlmJH4mAHaDb6XEWhPWh2zHFPsMuVhA==", "name"=>"usertest", "pass"=>"passtest"}
Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms)



ActiveModel::UnknownAttributeError (unknown attribute 'username' for User.):

app/controllers/users_controller.rb:9:in `create'

usernameなんてないはずなのだが・・・と思い調べてみると、同じような現象が起きている方の投稿を発見。

ActiveModel::UnknownAttributeErrorの意味|teratail

もう一度db:migrateを行えば解決したようですので、試してみる。
※Dockerを使用しています。

docker-compose run web bundle exec rake db:migrate

再度登録作業を行ったら、無事データベースに登録されました。

試しにフォームのinputのname属性を変更して再度登録してみました。

user→username
pass→password

<%= form_tag("/users/create") do %>
  <input type="text" name="username" placeholder="ユーザーネーム" class="form_inp inp_text">
  <input type="text" name="password" placeholder="パスワード" class="form_inp inp_text">
  <div class="btn_area">
    <input type="submit" value="登録する" class="btn btn01 darkblue">
    <!-- /btn_area -->
  </div>
<% end %>

すると再度エラーが出ました。
そこでもう一度db:migrateすると、無事登録できるようになりました。

なるほど、そういえばname属性をusernameに変更していたな・・・。
一度送信を行ったあと(失敗しても)にinputのname属性を変更してしまうとエラーになってしまうようで、「name属性を変更してしまったこと」が原因だった。

閉じタグ

今後、name属性の変更はなるべく行わないようにしよう。
データベースへの登録に困った際は「db:migrate」を試してみよう。
時間かかってしもうた・・・。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hacchi56
マークアップエンジニア3年目。愛知県在住の29歳です。バックエンドエンジニアを目指し「Ruby on Rails」を学習中。自分を疑っている部分もあるので、積極的に「LGTM」していただけると喜んじゃいます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?