Ruby on Rails Tutorial を5章までやってそこからdeviseを導入し、ユーザーモデルを作成しました。
そして13章まで飛ばして現在別のユーザーモデルに紐つけるpostモデルを作成していました。
そして13.1.1の演習の過程で
コンソール上でpostにuser_idを使用してpost.userを行おうとしたら
上記のエラーArgumentError: wrong number of arguments (given 0, expected 1)
が起きました。
散々調べてこれがよくある引数の数が違うといったミスということはわかります。
しかしここで更に因数が必要とも思えません。。。
試しにpost.user.usernameをやると通るんですよね。しかしpost.userでは通らないのはなぜか。。。?
ruby
1 2irb(main):003:0> post = Post.first 3 Post Load (2.3ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT ? [["LIMIT", 1]] 4=> #<Post id: 1, content: "Lorem ipsum", title: nil, user_id: 1, created_at: "2018-05-30 03:01:50", updated_at: "2018-05-30 03:01:50"> 5irb(main):004:0> post.user.username 6 User Load (3.8ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 7=> "Michael Hartl" 8irb(main):005:0> post.user 9ArgumentError: wrong number of arguments (given 0, expected 1)
おそらくdeviseの導入とチュートリアルを途中までやったせいで定義名とかがかぶってしまい変なことになっていて
postではなく、userの方に問題があるのではないかと思うのですが、いかんせんどこにそのコードがあるかがわからないのです。
もちろん憶測なので違うかもしれませんがこの問題に対処できる方がおられましたらよろしくお願いいたします。
ruby
1irb(main):001:0> user = User.first 2 User Load (3.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? [["LIMIT", 1]] 3ArgumentError: wrong number of arguments (given 0, expected 1)
*rails tutorialはすでに2周していますがわからないところ覚えてないところもあるのでよしなに。。。
アプリ制作に使ったサイト
ruby on rails tutorial
deviseの使い方
エラー解決のために参考にしたサイト
railsチュートリアルをdevise用に書き換え
あなたの回答
tips
プレビュー