2013-12-11 2 views
0

RubyMine은 "각 컨트롤러 액션은"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

이동 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을 제공 할 것입니다.