0

ユーザー認証にDeviseを使用しており、登録コントローラーの作成アクションを上書き/変更していますが、非常に冗長になり、繰り返しすぎる危険があります。ユーザーが特定の権限を持つアカウントのキーホルダーと、読み取り専用アクセスを持つゲストを設定できるアプリを作成しています。

私が達成しようとしているのは、ゲストまたはキーホルダーのどちらを参照しているかを指定するのではなく、create メソッド内で「リソース」オブジェクトを使用することです。たとえば、ユーザーが自分のアカウントのキーホルダーまたはゲストを既に持っているかどうかを確認します (許可されているのは 1 つだけです)。

つまり、次のようなものの代わりに:

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
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 に答える