Я использую Devise для аутентификации пользователей и переписываю/изменяю действие create на контроллере регистрации, однако он может стать довольно многословным и повторить тоже много. Я создаю приложение, в котором пользователь может установить держатель ключа для своей учетной записи, у которого есть определенные привилегии, и гостя, у которого есть доступ только для чтения.Использование текущего ресурса для упрощения кода в контроллере для Devise
То, что я пытаюсь достичь, - использовать объект «ресурс» в методе create, а не указывать, ссылаюсь ли я на гостя или владельца ключа. Например, проверка того, имеет ли пользователь уже владельца ключа или гостя для своей учетной записи (им разрешено только одно).
I.e. вместо того, чтобы что-то вдоль линий:
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
Благодарим за это - что делать, если я пытаюсь обновить guest_id current_user например? Раньше я делал это с помощью @ user.guest_id = resource.id - однако read_attribute генерирует синтаксическую ошибку при использовании таким образом. Благодаря! – ecs
@ecs это тоже возможно. Я отредактировал свой ответ. –
Это здорово, только то, что мне нужно, спасибо! В чем разница между write_attribute и update_attribute, или это не имеет значения в этом случае? – ecs