我的应用中有一个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
如果我尝试编辑当前用户(我自己),它可以正常工作。
答案 0 :(得分:0)
在我的认证用户的能力课程中,我有这个:
can :update, User, id: user.id
将其更改为以下代码后,我可以编辑其他用户:
can :update, User do |u|
u.id == user.id
end