Ruby on rails 更新用户角色
Posted
技术标签:
【中文标题】Ruby on rails 更新用户角色【英文标题】:Ruby on rails Updating User roles 【发布时间】:2019-04-30 18:23:50 【问题描述】:我正在尝试在用户成功付款后将其角色从“免费”更新为“高级”。
用户.rb
class User < ApplicationRecord
enum role: [:free, :premium]
before_create :assign_default_role
def assign_default_role
self.role ||= :free
end
end
订阅控制器
def create
@user = current_user
@subscription = Subscription.new(subscription_params)
if @subscription.save_with_payment
redirect_to @subscription, :notice => "Thank you for subscribing"
@user.update_attribute(role: premium )
else
render :new
end
end
在尝试让用户付款后,我收到此错误未定义的局部变量或方法 `premium'
【问题讨论】:
【参考方案1】:您确定不希望 premium
成为 :premium
吗?更好的是,如何:
@user.premium!
我个人更喜欢使用enum
的形式:
class User < ApplicationRecord
enum role:
free: 0,
premium: 1
before_create :assign_default_role
def assign_default_role
self.role ||= :free
end
end
出于docs中讨论的原因。
最后,也许您应该考虑在role
上设置一个默认值(使用迁移),这样您就不必这样做before_create
位。
【讨论】:
以上是关于Ruby on rails 更新用户角色的主要内容,如果未能解决你的问题,请参考以下文章