从方法中的操作返回

时间:2013-10-07 21:04:44

标签: ruby-on-rails ruby

我有一个像这样的控制器

MyController < ApplicationController

def my_method
  validate(params[:name].blank?, "Name can't be blank")
end
private

def validate(condition, msg)
  if condition
    flash[:notice] = msg
    redirect_to :back
    return
  end
end

由于显而易见的原因,此代码将出现“重定向或仅渲染一次”错误。是否有一种优雅的方法可以在此方法中返回操作并避免对我的操作进行测试?

1 个答案:

答案 0 :(得分:1)

你不能真正强迫你的方法的调用者做任何事情,但你可以告诉它你想要它的行为:

def my_method
  return unless validate(params[:name].blank?, "Name can't be blank")
end

def validate(condition, msg)
  return true unless condition

  flash[:notice] = msg
  redirect_to :back
  return false
end