0

我正在使用 Devise 进行用户身份验证,并且正在覆盖/修改注册控制器上的创建操作,但是,它有变得非常冗长和重复自己太多的危险。我正在创建一个应用程序,用户可以在其中为其帐户设置一个密钥持有者,该密钥持有者具有某些特权,以及一个具有只读访问权限的访客。

我想要实现的是在 create 方法中使用“资源”对象,而不是指定我是指来宾还是密钥持有者。例如,检查用户是否已经为他们的帐户拥有一个密钥持有者或访客(他们只被允许一个)。

即,而不是类似的东西:

if @user.keyholder_id
  # don't create keyholder
end

if @user.guest_id
  # don't create guest 
end

是否可以使用当前的资源名称,例如:

if @user.{resource_name}_id.nil?
  # create resource in question
end
4

1 回答 1

0

你可以做:

@user.read_attribute("#{resource_name}_id").nil?

要动态设置属性,请使用:

@user.update_attribute("#{resource_name}_id", resource.id)
于 2013-08-05T10:44:31.147 回答