如何从rails控制台获取详细的错误消息?

时间:2014-01-01 07:34:46

标签: ruby-on-rails ruby

假设我希望从控制台创建一个用户,其中包含已经的电子邮件。如果我User.create(...)

由于模型验证(在这种情况下唯一性)。 create失败,rails控制台中的输出会显示:rollback transaction(用户未保存)

为了测试目的。他们是否可以获取触发回滚的显式错误?在这种情况下,它会说:“ROLLBACK:电子邮件不是唯一的”。

3 个答案:

答案 0 :(得分:8)

您可以在Rails控制台中执行以下操作:

>> user = User.new(...)
>> user.save
>> user.errors.messages

这样,您就知道导致save失败的错误。

答案 1 :(得分:7)

你也可以这样做:

User.create!

'bang'将强制它在没有额外步骤的情况下向您显示错误。

答案 2 :(得分:0)

如果您的意思是使用“ rails console”,那么我希望这个小例子对您有用:

学生模型(student.rb):

class Student < ApplicationRecord
  validates :name, presence: true, length: {minimum: 5, maximum: 50}
end

然后在Rails控制台($ rails控制台)上执行以下操作:

> student = Student.crate(name:"alba")
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
 => #<Student id: nil, name: "alba">

> student.errors.any?
 => true

> student.errors.full_messages
 => ["Name is too short (minimum is 5 characters)"]

希望这会有所帮助。