Rails, неинициализированная константа при создании - PullRequest
0 голосов
/ 07 мая 2020

Я получаю сообщение об ошибке при попытке сохранить объект типа Wedding. У меня много внешних ключей к одному классу, и при создании действия я получаю NameError (неинициализированная константа Wedding :: user)

Wedding.rb

class Wedding < ApplicationRecord
    belongs_to :creator, class_name: 'user', foreign_key: 'creator_id'
    belongs_to :second_creator, class_name: 'user', foreign_key: 'second_creator_id', optional: true
    belongs_to :third_creator, class_name: 'user', foreign_key: 'third_creator_id', optional: true
    belongs_to :bride, class_name: 'user', foreign_key: 'bride_id'
    belongs_to :groom, class_name: 'user', foreign_key: 'groom_id'
    belongs_to :photo_type, class_name: 'tier', foreign_key: 'photo_type', optional: true
    belongs_to :video_type, class_name: 'tier', foreign_key: 'video_type', optional: true

    enum wedding_status: { reservation: 0, signed: 1, post: 2, delivered: 3, done: 4 }

end

User.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  before_save :set_full_name

  has_many :weddings, class_name: 'wedding', foreign_key: 'creator_id'
  has_many :weddings, class_name: 'wedding', foreign_key: 'second_creator_id'
  has_many :weddings, class_name: 'wedding', foreign_key: 'third_creator_id'
  has_many :weddings, class_name: 'wedding', foreign_key: 'bride_id'
  has_many :weddings, class_name: 'wedding', foreign_key: 'groom_id'

  validates :role, :email, :first_name, :last_name, presence: true

  enum role: { super_admin: 0, admin: 1, bride: 2, groom: 3 }

  protected

  def set_full_name
    self.full_name = "#{first_name} #{last_name}"
  end

end

wedding_controller.rb

def create
        @wedding = Wedding.new(wedding_params)


        if @wedding.save
          redirect_to weddings_path, notice: t('views.weddings.create.notice')
        else
          render :new
        end
end

private

      def wedding_params
        ret = params.require(:wedding).permit(:creator_id, :bride_id, :groom_id, :photo_type_id, 
        :video_type_id, :wedding_date, :wedding_location, :reception_location, :bride_house, 
        :groom_house, :is_session_photo, :is_session_video, :session_location, :session_date, 
        :price, :is_paid, :advance, :is_advance_paid, :is_photo, :is_video, :video_link, 
        :photo_link, :thumb_image, :second_creator_id, :third_creator_id, :wedding_status)

        ret
      end

Я использую simple_form для рендеринга моей формы.

1 Ответ

0 голосов
/ 07 мая 2020

Имя класса должно начинаться с заглавной буквы.

belongs_to :creator, class_name: 'User', foreign_key: 'creator_id'

Вам нужно изменить все остальные строки (та же проблема)

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