假设我希望从控制台创建一个用户,其中包含已经的电子邮件。如果我User.create(...)
由于模型验证(在这种情况下唯一性)。 create
失败,rails控制台中的输出会显示:rollback transaction
(用户未保存)
为了测试目的。他们是否可以获取触发回滚的显式错误?在这种情况下,它会说:“ROLLBACK:电子邮件不是唯一的”。
答案 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)"]
希望这会有所帮助。