Ruby on rails初心者です。
おそらく初歩的な質問だと思いますが、ご回答いただければ幸いです。
#やっていること
ブログ投稿機能、会員登録機能、管理者権限機能を作っています。
gemは使っていません。
#やりたいこと
会員登録をしていないユーザー → ブログ記事一覧が見える状態、ブログ詳細ページでいいねはつけられない
会員登録をしているが管理者ではないユーザー → ブログ記事一覧が見える状態、いいねをつけられる
管理者であるユーザー → ブログ記事一覧が見える状態、いいねをつけられる、かつブログ記事一覧ページに新規投稿リンクが表示される状態
上記のように、ログインの有無や管理者かどうかによって表示内容を変えたいです。
#エラー内容
会員登録をしていないユーザーがブログ一覧記事ページを見ようとすると、
下記のエラーが出ます。(したがって、いいねがつけられるかどうかまで確認はできていません)
undefined method `admin' for nil:NilClass
会員登録をしていて管理者ではないユーザーであればページは正常に表示されます。
#現在のコード
記事一覧ページのHTML
erb
1 <% if @current_user.admin == true %> 2 <%= link_to 'new', blog_new_path %> 3 <% else %> 4 <p>index</p> 5 <% end %>
application_controller.rb
ruby
1 before_action :set_current_user 2 def set_current_user 3 @current_user = User.find_by(id: session[:user_id]) 4 end
sqliteで select * from sqlite_master; を実行して得られたusersテーブルの情報
sqlite
1table|users|users|9|CREATE TABLE "users"( 2"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, 3"email" varchar, 4"password" varchar, 5"created_at" datetime NOT NULL, 6"updated_at" datetime NOT NULL, 7"name" varchar, 8"admin" boolean DEFAULT 0 9)
gemを使えば実装できるという情報も若干得ていますが、
現時点でなぜうまくいかないのかの理由がわかればとてもスッキリします。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。