Неопределенный метод "курсы" для nil: NilClass - PullRequest
0 голосов
/ 24 февраля 2019

Когда я захожу на курсы / новую страницу в моем приложении heroku, возникает ошибка о том, что метод курсов не определен.Кроме того, когда я создаю курс на консоли, он не имеет идентификатора или create_at.

Контроллер курсов:

class CoursesController < ApplicationController
  def home
    @course = current_user.courses.find(params[:id])
  end

  def new
    @course = current_user.courses.build
  end

  def create
    @course = current_user.courses.build(course_params)
    if @course.save
      flash[:success] = "Course Created"
      redirect_to coursehome_path
    else
      render 'new'
    end
  end

  private

    def course_params
     params.require(:course).permit(:name)
    end
end

Модель колледжа:

class College < ApplicationRecord
  has_many :courses, dependent: :destroy
  has_secure_password
  def College.digest(string)
    cost = ActiveModel::SecurePassword.min_cost ? 
    BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
    BCrypt::Password.create(string, cost: cost)
  end
end

Модель курса:

class Course < ApplicationRecord
  belongs_to :college
end

Миграция:

class CreateCourses < ActiveRecord::Migration[5.1]
  def change
    create_table :courses do |t|
      t.string :name
      t.references :college, foreign_key: true

      t.timestamps
    end
    add_index :courses, [:college_id, :created_at]
  end
end

Редактировать:

На самом деле, я создал контроллер с именем Collegesessions и добавил метод current_user в его помощник:

module CollegesessionsHelper
  def log_in(college)
    session[:user_id] = college.id
  end

  def current_user
    if session[:user_id]
      @current_user ||= College.find_by(id: session[:user_id])
    end
  end

  def logged_in?
    !current_user.nil?
  end

 def log_out
    session.delete(:user_id)
    @current_user = nil
  end
end

1 Ответ

0 голосов
/ 24 февраля 2019

Когда вы пытаетесь получить доступ к current_user.courses, он ищет ассоциацию курсов в user модели.

Ваша модель курса не имеет user ассоциации.

КурсМодель

class Course < ApplicationRecord
  belongs_to :college
  belongs_to :user
end

Модель пользователя

class User < ApplicationRecord
    //fields

    has_many: courses

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...