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
答案 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。