我对此非常困惑。我的模型有以下自定义验证:
def custom_validation
errors[:base] << "Please select at least one item" if @transactionparams.blank?
end
基本上它正在检查以确保属于不同模型的某些参数不是空白的。
def request_params
@requestparams = params.require(:request).permit(:detail, :startdate, :enddate)
@transactionparams = params["transaction"]
@transactionparams = @transactionparams.first.reject { |k, v| (v == "0") || (v == "")}
end
如果它不是空白,那么会发生的是保存记录,然后发生各种其他事情。
def create
request_params
@request = @user.requests.create(@requestparams)
if @request.save
...
else
render 'new'
end
end
如果未保存记录,则重新呈现的new
视图将显示阻止创建@request
的错误。问题是无论@transactionparams.blank?
是真还是假,记录总是无法保存,我在日志中用puts
专门检查了这一点。
发生了什么事?我仔细阅读了文档,因为我认为自定义验证器可能无法用于其他变量......但事实并非如此......
谢谢!
答案 0 :(得分:0)
确实可以阅读相关文章。从模型中的控制器访问变量是不好的做法。这就是为什么......如果我将puts
检查放在模型而不是控制器中,@transactionparams
总是为零。