###前提・実現したいこと
ruby初心者です。
現在タスク管理アプリを作成途中で、一対多の投稿機能の実装。
ログインユーザが、自分自身のタスクのみをCRUD操作する。
発生している問題・エラーメッセージ
tasksテーブルにuserのカラムを追加したところこのようながエラーが表示されました。
https://gyazo.com/160cf2312da1f7252be56237993bdce8
![]
また、rails consoleで投稿を作成して見ようと思っていたのですが、エラーが出ているようでわかりませんでした。
コンソール
ec2-user:~/environment/kadai-tasklist (master) $ rails c Loading development environment (Rails 5.0.6) 2.4.1 :001 > user = User.first User Load (0.2ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1 => nil 2.4.1 :002 > user.tasks NoMethodError: undefined method `tasks' for nil:NilClass from (irb):2 from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.0.6/lib/rails/commands/console.rb:65:in `start' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.0.6/lib/rails/commands/console_helper.rb:9:in `start' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:78:in `console' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:49:in `run_command!' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.0.6/lib/rails/commands.rb:18:in `<top (required)>' from bin/rails:4:in `require' from bin/rails:4:in `<main>' 2.4.1 :003 >
該当のソースコード
/app/models/task.rb
class Task < ApplicationRecord belong_to :user validates :user_id, presence: true validates :content, presence: true, length: { maximum: 255 } validates :status, presence: true, length: {maximum: 10} end
config/routes.rb
Rails.application.routes.draw do get 'sessions/new' get 'sessions/create' get 'sessions/destroy' get 'toppages/index' get 'users/index' get 'users/show' get 'users/new' get 'users/create' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html root to: 'toppages#index' get 'login', to: 'sessions#new' post 'login', to: 'sessions#create' delete 'logout', to: 'sessions#destroy' root to: 'tasks#index' resources :tasks get 'signup', to:'users#new' resources :users, only: [:index, :show, :new, :create] end
/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base protect_form_forgery with: :exception include SessionsHelper private def require_user_logged_in unless logged_in? redirect_to login_url end end end
/db/migrate/20180210084420_add_user_to_tasks.rb
追加したカラム
class AddUserToTasks < ActiveRecord::Migration[5.0] def change add_reference :tasks, :user, foreign_key: true end end
試したこと
現在あるtasksテーブルをマイグレーションして作成テーブルの作成し直し。
補足情報(FW/ツールのバージョンなど)
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Rails 5.0.6
mysql2 >= 0.3.18', < 0.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/10 14:03