2013-12-11 112 views
0

RubyMine給出了與「Fat Model,Skinny Controller」練習有關的「每個控制器動作只調用除初始查找或新的之外的一種模型方法」的en錯誤。但我不知道如何讓這段代碼更好。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爲好。