Mic*_*jda 0 model ruby-on-rails devise ruby-on-rails-3.2
看来我在这里只停留在一个简单的点 - 我有一个名为"User"的模型,其中一个名为"username"的字段设置为唯一.
让我们假设我的网站上有新访问者,想要注册,必须选择用户名并点击"注册".在这种情况下,我的字段"username"必须是attr_accessible.
我现在想要完成的是当用户编辑他/她的帐户时,字段"用户名"不再可编辑.
我怎么能意识到这一点?
Bouns-Karma:我正在使用带有设计的CanCan,因此具有admin-role的用户可以改变给定用户的用户名的解决方案将是超级的!我的想法告诉我"除非user.admin?" 但是我的编码时间太长了.
无论如何 - 我希望会有一些答案:)
在更新时创建自定义验证:
class User
attr_accessor :admin_action # do not put in attr_accessible
validate :freeze_username, :on => :update
protected
def freeze_username
errors.add(:username, "cannot be changed") if self.username_changed? unless self.admin? || self.admin_action
end
end
Run Code Online (Sandbox Code Playgroud)
admin_action是一个虚拟属性,true如果管理员正在进行更新,您可以从控制器设置该属性.
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |