2013-12-11 3 views
0

RubyMine дает en error about «Каждое действие контроллера вызывает только один метод модели, отличный от первоначальной находки или нового», что связано с практикой «Fat Model, Skinny Controller». Но я не знаю, как я могу сделать этот код лучше.Ruby on Rails - практика «Fat Model, Skinny Controller»

Спасибо за ваше время.

def update 
    @admin = Admin.find(params[:id]) 

    if @admin.update_attributes(permitted_params) 
     redirect_to admins_admins_path, notice: "#{@admin.email} updated" 
    else 
     render action: "edit" 
    end 
end 

ответ

1

Move find частному методу:

before_action :find_admin, only: [:update] 

private 

def find_admin 
    @admin = Admin.find params[:id] 
end 
0

Вместо того, обратный вызов, я предпочитаю его в качестве единственного метода и имеют переменную @admin установить на него. Поэтому, если он уже установлен раньше, вам не нужно снова ударять db.

private 

def admin 
    @admin ||= Admin.find params[:id] if params[:id] 
end 

В вашем методе вы можете сделать:

def update 
    if admin.update_attributes(permitted_params) 
    redirect_to admins_admins_path, notice: "#{admin.email} updated" 
    else 
    render action: "edit" 
    end 
end 

Это даст вам @admin, а также.

 Смежные вопросы

  • Нет связанных вопросов^_^