注册期间Rails 5'nomethod'错误

时间:2016-11-09 23:30:18

标签: mysql authentication ruby-on-rails

我在用户注册期间收到nomethod名称错误。但是,我的数据库中的users表中没有名称列,并且表单中没有名称字段,因此我不明白为什么会抛出此错误。这是错误,然后是我的表单,控制器和架构。 noMethodError in Users#Create (wtf?)

  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render :show, status: :created, location: @user }
      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

这是我的用户控制器。该错误源自用户控制器创建操作。

ActiveRecord::Schema.define(version: 20161109225217) do

  create_table "users", force: :cascade do |t|
    t.string   "first_name"
    t.string   "last_name"
    t.string   "email"
    t.string   "display_name"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
    t.string   "password_digest"
  end

end

当然我认为它可能是数据库架构,但事实并非如此。这是架构。

class User < ApplicationRecord
  attr_accessor :password
    before_save { self.email = email.downcase }
    validates :name, presence: true, length: { maximum: 50 }
    VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
    validates :email, presence: true, length: { maximum: 255 },
                      format: { with: VALID_EMAIL_REGEX },
                      uniqueness: { case_sensitive: false }
    has_secure_password
    validates :password, presence: true, length: { minimum: 6 }
  end

我不知道导致此错误的原因。请提出任何建议!?

private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      params.require(:user).permit(:first_name, :last_name, :email, :display_name, :password, :password_confirmation)
    end
end

我的用户参与 -

    grouped = round_data[round_data.batch==i].groupby("username")
users_sorted_average = pd.DataFrame({col:vals['absolute_error'] for col,vals in grouped}).mean().sort_values(ascending=True)   

2 个答案:

答案 0 :(得分:0)

您不应在用户模型中验证:name,因为您没有:name列。

答案 1 :(得分:0)

在验证字段中检查您的模型是否有错误

你的代码

 validates :name, presence: true, length: { maximum: 50 }`

改为喜欢这个

 validates :first_name, :last_name, presence: true, length: { maximum: 50 }