我正在使用Devise进行用户身份验证,并且正在覆盖/修改注册控制器上的创建操作,但是,它有可能变得非常冗长,并且重复自己太多。我正在创建一个应用程序,用户可以为其帐户设置密钥持有者,具有特定权限,以及具有只读访问权限的访客。
我想要实现的是在create方法中使用'resource'对象,而不是指定我是指客户还是keyholder。例如,检查用户是否已拥有其帐户的密钥持有者或访客(他们只允许使用一个)。
即。取而代之的是:
if @user.keyholder_id
# don't create keyholder
end
和
if @user.guest_id
# don't create guest
end
是否可以使用当前的resource_name,例如:
if @user.{resource_name}_id.nil?
# create resource in question
end
答案 0 :(得分:0)
你可以这样做:
@user.read_attribute("#{resource_name}_id").nil?
要动态设置属性,请使用:
@user.update_attribute("#{resource_name}_id", resource.id)