Rails admin"用户名已被采用"

时间:2015-08-01 14:37:25

标签: ruby-on-rails ruby

我的应用中有一个Rails管理面板。当我尝试更新其中一个现有用户(编辑user_info字段+点击保存)时,我得到了

User failed to be updated
- Username has already been taken

即使我根本不碰这个用户名。

所有操作均来自管理员帐户。在ability.rb中有can :manage, :all

我已经尝试将on: :create添加到validates :username的末尾,但它给我带来了不同的错误。

如何从Rails管理信息中心允许用户编辑?

  validates :username, presence: true, uniqueness: true, length: {in: 3..150}
添加on: :create

ActiveRecord::StatementInvalid in RailsAdmin::MainController#edit
SQLite3::ConstraintException: PRIMARY KEY must be unique: UPDATE "users" SET "current_sign_in_at" = ?, "last_sign_in_at" = ?, "confirmed_at" = ?, "confirmation_sent_at" = ?, "user_info" = ?, "id" = ?, "updated_at" = ? WHERE "users"."id" = ?


    def each
      loop do
        val = step
        break self if done?
        yield val
      end

UP2

如果我尝试编辑当前用户(我自己),它可以正常工作。

1 个答案:

答案 0 :(得分:0)

在我的认证用户的能力课程中,我有这个:

can :update, User, id: user.id

将其更改为以下代码后,我可以编辑其他用户:

 can :update, User do |u|
   u.id == user.id
 end