2

我有以下代码:

validates :username,:password, :presence => {:message => 'fields must not be blank'}

但是当该字段为空白时,我无法收到错误消息。

4

3 回答 3

5

通过错误数组访问它们:

<model_instance>.errors

然后,您可以通过执行以下操作单独访问消息:

model.errors.full_messages.each do |message|
  puts message
end 
于 2012-10-03T06:49:05.920 回答
1

例如

def create
  @user = User.new(params[:user])
  if @user.valid? 
    logger.warn("====valid==========#{@user.error.full_messages.inspect}============")        
  else
    logger.warn("====error==========#{@user.error.full_messages.inspect}============")        
  end
end

检查您的终端打印的内容

于 2012-10-03T09:18:07.777 回答
0

虽然不确定,但这样的事情对我有用(只是一个示例场景):

def create
  model_instance = Model.new
  begin
    if model_instance.save_model # custom save for model (if required)
      # code
    else
      # code
    end
  rescue
    p model_instance.errors # here you will be able to access them.
  end
end

所以它没什么,只是引入了异常处理。

还有一个建议,问题中的代码行,如果用户名为空,则错误消息将是“用户名字段不能为空”,因此建议使用单数错误消息:)

希望它会有所帮助!

于 2012-10-03T08:26:35.767 回答