Ruby on Rails - “Fat Model,Skinny Controller”练习

时间:2013-12-11 11:32:30

标签: ruby-on-rails ruby ruby-on-rails-4 rubymine

RubyMine给出了一个错误:“每个控制器动作只调用一个模型方法而不是初始查找或新”,这与“胖模型,瘦机控制器”实践相关。但我不知道如何才能使这段代码变得更好。

感谢您的时间。

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

2 个答案:

答案 0 :(得分:1)

find移至私有方法:

before_action :find_admin, only: [:update]

private

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

答案 1 :(得分:0)

我没有回调,而是仅将其作为方法,并将变量@admin设置为它。因此,如果之前已经设置过,则无需再次点击数据库。

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。