Действие моего контроллера выглядит следующим образом:
# check if user is already working
if current_user.working?
flash[:error] = I18n.translate 'error.working'
redirect_to labor_url and return
end
# check if user is doing a quest
if current_user.has_tavern_quest?
flash[:error] = I18n.translate 'error.has_quest'
redirect_to labor_url and return
end
Теперь этот код повторяется в других контроллерах и их действиях.Поэтому я подумал, что было бы неплохо немного СУШИТЬ вещи.Я думал о создании пользовательского метода, например:
def is?(states)
possible_states = :working, :doing_tavern_quest
# check states
# set flash messages, do the same things as above without the redirects
end
Идея состоит в том, что теперь я бы просто использовал что-то подобное в своих действиях:
redirect_to labor_url if current_user.is?(:working, :doing_tavern_quest)
Как вы думаете, это хорошо?идея?Это хороший способ высушить вещи или я мог бы сделать это лучше?