【问题标题】:Rails new record with enum is always the same带有枚举的Rails新记录总是相同的
【发布时间】:2016-01-21 15:09:47
【问题描述】:

我正在使用邀请来邀请新用户。

我有一个带有枚举角色列的用户模型

class User < ActiveRecord::Base
  enum role: [:client, :trainer, :admin]

我的新用户表单的角色列具有以下内容

.form-group
    = f.label :role, class: "col-sm-2 control-label"
    .col-sm-10
      = f.select :role, ['client', 'trainer', 'admin'], {},{class: "form-control"}

如果我选择“客户端”并提交表单,我可以看到正确的参数已提交"role"=&gt;"client",但是当我检查数据库时,它总是具有“培训师”角色

users_controller

    def create
        @user = User.new(user_params)
        if User.find_by_email(@user.email).nil?
          User.invite!(:email => @user.email)
          redirect_to(users_path, :notice => 'User created')
        else
          render :action => 'new'
        end
      end
def user_params
      params.require(:user).permit(:email, :role, :name)
    end

【问题讨论】:

  • 您的 user_params 是否允许角色?
  • @MarceloRisoli 是的,当然...
  • 为什么会被否决?
  • 试试= f.select :role,User.roles.values, {},{class: "form-control"}

标签: ruby-on-rails ruby-on-rails-4 enums devise devise-invitable


【解决方案1】:

这可能是因为您正在检查User.new.role 的角色吗? 您应该检查最后创建的用户(User.last)

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多