前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
User.create!(name: 'admin', email: 'admin@example.com', password: 'password', password_confirmation: 'password', admin: true)
発生している問題・エラーメッセージ
terminal
1ActiveModel::UnknownAttributeError: unknown attribute 'admin' for User. 2from /Users/user/rails/taskleaf/vendor/bundle/ruby/2.6.0/gems/activemodel-5.2.3/lib/active_model/attribute_assignment.rb:53:in `_assign_attribute'
該当のソースコード
Rails.application.routes.draw do namespace :admin do resources :users end root to: 'tasks#index' resources :tasks get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' end
app/controllers/admin/users_contriller.rb
class Admin::UsersController < ApplicationController before_action :require_admin def new @user = User.new end def edit @user = User.find(params[:id]) end def show @user = User.find(params[:id]) end def index @users = User.all end def create @user = User.new(user_params) if @user.save redirect_to admin_user_url(@user), notice: "ユーザー「#{@user.name}」を登録しました。" else render :new end end def update @user = User.find(params[:id]) if @user.update(user_params) redirect_to admin_user_url(@user), notice: "ユーザー「#{@user.name}」を更新しました。" else render :edit end end def destroy @user = User.find(params[:id]) @user.destroy redirect_to admin_user_url, notice: "ユーザー「#{user.name}」を削除しました。" end private def user_params params.require(:user).permit(:name, :email, :admin, :password, :password_confirmation) end def require_admin redirect_to root_url, unless current_user.admin? end end
schema.rb
# This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. # # Note that this schema.rb definition is the authoritative source for your # database schema. If you need to create the application database on another # system, you should be using db:schema:load, not running all the migrations # from scratch. The latter is a flawed and unsustainable approach (the more migrations # you'll amass, the slower it'll run and the greater likelihood for issues). # # It's strongly recommended that you check this file into your version control system. ActiveRecord::Schema.define(version: 2019_11_28_035704) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" create_table "tasks", force: :cascade do |t| t.string "name", limit: 30 t.text "description" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.bigint "user_id", null: false t.index ["user_id"], name: "index_tasks_on_user_id" end create_table "users", force: :cascade do |t| t.string "name", null: false t.string "email", null: false t.string "password_digest", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["email"], name: "index_users_on_email", unique: true end end
試したこと
$ bundle list | grep bcrypt * bcrypt (3.1.13)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
usersテーブルにadminというカラムはありますか?
pry(main)> User.column_adminでusersテーブルにadminカラムがあるか確認したところ
User.column_admin
NoMethodError: undefined method `column_admin' for User (call 'User.connection' to establish a connection):Class
とエラーが出ました。
add_admin_to_users.rbに`add_column :users, :admin, :boolean, default: false, null: false`の記述はあるのですがadminフラグが追加されていなかったということでしょうか。
db:migrateしましたか?
schema.rbはどうなっていますか?
何度もすみません。db:migrateはマイグレーションファイルの編集後に行いました。`schema.rb`を追加で記載しました。`admin`が見当たりませんでした。
db:migrateを実行した後にadd_admin_to_users.rbを修正して再度db:migrateを実行したんですか?
回答1件
あなたの回答
tips
プレビュー