Когда я создаю User в своем приложении Rails, я получаю следующую ошибку ...
NoMethodError (undefined method `collation' for nil:NilClass)
Я бился головой о стену рельсами, пытаясь выяснить, в чем проблема.
Я не совсем уверен, что не так с моим кодом, так как он довольно типичен, как вы можете видеть ниже ...
user.rb
class User < ApplicationRecord
has_secure_password
before_create do
self.username = 'user-' + SecureRandom.hex(8)
end
validates :email, presence: true, uniqueness: true, length: { within: 4..255 }
validates :username, uniqueness: true, length: { is: 13 }
validates :password, presence: true, uniqueness: true, length: { within: 8..255 }
end
user_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
def index
@users = User.all
end
def show; end
def new
@user = User.new
end
def edit; end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render :new }
end
end
end
def update
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'User was successfully updated.' }
else
format.html { render :edit }
end
end
end
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url, notice: 'User was successfully destroyed.' }
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.fetch(:user).permit(:username, :email, :password, :password_confirmation)
end
end
_form. html .erb
<%= form_for(@user, local: true) do |form| %>
<div class="field">
<%= form.label :email %>
<%= form.text_field :email %>
</div>
<div class="field">
<%= form.label :password %>
<%= form.password_field :password %>
</div>
<div class="field">
<%= form.label :password_confirmation, 'Password Confirmation' %>
<%= form.password_field :password_confirmation %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
Я изменил Кодирование в базе данных также, кажется, ничего не работает.
ОБНОВЛЕНИЕ Я не совсем уверен, что было не так, я вернулся к своей "первоначальной фиксации" проекта и восстановил все и он работает нормально, он использует тот же код. Я отмечу это как решенное, но у меня нет правильного решения, кроме восстановления.