неинициализированная постоянная степень (ошибка) - PullRequest
0 голосов
/ 30 мая 2018

Я получаю ошибку uninitialized constant Degree.У меня есть столбец в базе данных с именем столбца type.Когда я даю данные в это поле и сохраняю, данные, которые я давал, сохраняются в базе данных, но после этого отображается сообщение об ошибке, и я не могу перезагрузить эту страницу.

Код контроллера

class ProfileController < ApplicationController
  before_action :set_user, only: %i[index update_profile]

  def index; end 
  def update_profile
    if @user.update(user_params)
      redirect_to profile_index_path, notice: 'Profile was successfully updated.'
    else
      render :index
    end
  end
private

  def set_user
    @user = User.find(current_user.id)
    @user.education || @user.build_education
  end

  def user_params
    params.require(:user).permit(:name, education_attributes: %i[id type name issue_institute education_status])
  end
end

education.rb

class Education < ApplicationRecord
  belongs_to :user

  validates_presence_of :user_id
end

user.rb

class User < ApplicationRecord
  has_one :education, dependent: :destroy
  accepts_nested_attributes_for :education
end

Просмотреть код

<%= form_for(@user, url: {action: 'update_profile'}, html: {class: 'm-form m-form--fit m-form--label-align-right'}) do |f| %>
<%= f.fields_for :education, @user.education do |e| %>
<%= e.select :type, options_for_select(%w(Degree Certification), params[:type]), prompt: 'Degree/Certification', class: 'form-control m-input' %>
<%= end %>
<%= f.submit 'Save Changes'%>
<%= end %>

Журнал терминала при сохранении этого поля

Started PATCH "/profile/update_profile" for 127.0.0.1 at 2018-05-30 09:04:37 +0530
Processing by ProfileController#update_profile as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9QiEdSxqwkhHqZHiraiQjJcUvUS+oJknYjYaxWUSQrh+je0ASeYQvs//Z+p+oZkOqyAiwxc3nsxp/iohO9B1BA==", "user"=>{"name"=>"Admin", "email"=>"admin@gmail.com", "address_attributes"=>{"area"=>"5, nehru Street", "city"=>"pune", "state"=>"mumbai", "country"=>"india", "postcode"=>"626781", "id"=>"1"}, "education_attributes"=>{"type"=>"Degree", "name"=>"ffgxh", "issue_institute"=>"", "education_status"=>"", "id"=>"1"}, "fee_attributes"=>{"fee_hour"=>"", "fee_month"=>"", "id"=>"1"}}, "commit"=>"Save Changes"}
  User Load (0.3ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
  User Load (0.2ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1
  Address Load (0.2ms)  SELECT  `addresses`.* FROM `addresses` WHERE `addresses`.`user_id` = 2 LIMIT 1
  Fee Load (0.2ms)  SELECT  `fees`.* FROM `fees` WHERE `fees`.`user_id` = 2 LIMIT 1
  Education Load (0.2ms)  SELECT  `educations`.* FROM `educations` WHERE `educations`.`user_id` = 2 LIMIT 1
Unpermitted parameter: :email
   (0.2ms)  BEGIN
  SQL (0.4ms)  UPDATE `educations` SET `type` = 'Degree', `updated_at` = '2018-05-30 03:34:37' WHERE `educations`.`id` = 1
   (5.3ms)  COMMIT
Redirected to http://localhost:3000/profile
Completed 302 Found in 19ms (ActiveRecord: 7.1ms)


Started GET "/profile" for 127.0.0.1 at 2018-05-30 09:04:37 +0530
Processing by ProfileController#index as HTML
  User Load (0.7ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
  User Load (0.3ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1
  Address Load (0.4ms)  SELECT  `addresses`.* FROM `addresses` WHERE `addresses`.`user_id` = 2 LIMIT 1
  Fee Load (0.3ms)  SELECT  `fees`.* FROM `fees` WHERE `fees`.`user_id` = 2 LIMIT 1
  Education Load (0.8ms)  SELECT  `educations`.* FROM `educations` WHERE `educations`.`user_id` = 2 LIMIT 1
Completed 401 Unauthorized in 12ms (ActiveRecord: 2.4ms)



NameError - uninitialized constant Degree:
  app/controllers/profile_controller.rb:41:in `set_user'

Данные сохраняются, но после этого у меня появляется страница с ошибкой.Может ли кто-нибудь помочь мне с этим?Заранее спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Я публикую свой комментарий в качестве ответа, чтобы каждый мог сослаться на него в будущем:

type - зарезервированное ключевое слово для AR.Проверьте список резервных ключевых слов активной записи из здесь .Измените имя столбца.Это разрешит ошибку.

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