У меня есть ресурсы, для которых имеет смысл обратиться к ним как к вложенным с другими ресурсами, так и по отдельности.Т.е. я ожидаю использовать все URL-адреса, подобные этим:
/account/4/transfers # all transfers which belong to an account
/user/2/transfers # all transfers input by specific user
/project/1/transfers # all transfers relevant to a project
/transfers # all transfers
Меня интересует, как мне написать действия TransfersController (например, index), так как это удвоит логику, найденную в родительских моделях - есть ли лучший способ, чемделать что-то вроде
TransfersController
...
def index
if !params[account_id].nil?
@account = Account.find(params[account_id])
@transfers = @account.transfers
elsif !params[user_id].nil?
@user = User.find(params[user_id])
if @user.accesible_by?(current_user)
@transfers = @user.transfers
end
elsif !params[projects_id].nil?
.....
и то же самое относится к представлениям - хотя все они будут перечислять передачи, они будут иметь очень разные заголовки, навигацию и т. д. для пользователя, учетной записи, проекта, ...
Я надеюсь, что вы видите образец из этого примера.Я думаю, что должно быть какое-то некрасивое решение для этого.По сути, я хотел бы отделить логику, которая выбирает отображаемые переводы, и другие вещи, такие как специфичные для контекста части представления.