gpt4 book ai didi

ruby-on-rails - FactoryGirl 没有给出有用的验证错误

转载 作者:行者123 更新时间:2023-12-04 19:51:34 25 4
gpt4 key购买 nike

我在我的装置中使用 FactoryGirl,但我发现它并没有真正产生有用的验证错误。

我总是收到 activerecord.errors.models.messages.record_invalid 的消息。

不确定需要哪些进一步的细节来帮助诊断。这使得跟踪每个错误成为一个极其缓慢的过程。

示例工厂:

Factory.define :partner do |partner|
partner.sequence(:username){ |n| "amcconnon#{n}" }
partner.first_name "Bobby Joe"
partner.last_name "Smiley"
partner.sequence(:email){ |n| "bob{n}@partners.com" }
partner.phone_number "5557 5554"
partner.country_id 75
partner.password "password"
partner.password_confirmation "password"
end

然后 Factory(:partner) => "ActiveRecord::RecordInvalid Exception: 看起来这些更改出了问题"

实际的问题当然是电子邮件序列没有正确使用 n 并且对电子邮件有一个独特的验证。但这是为了说明目的。

rails => 3.2.2
factory_girl 2.6.1

需要其他任何 deets 来帮助诊断吗?

(注意:编辑这个只是为了添加一个更容易阅读的工厂)

编辑:

根据 bijan 的评论:“我到底想做什么。”

试图运行“rspec 规范”。我想在这种情况下,当我使用像 Factory(:partner) 这样的工厂来获取错误消息时,当它无法包含我从 Partner.new({blah...}).valid 得到的相同错误时?然后查看验证失败。

最佳答案

我不确定这是否与您遇到的问题完全相同,但这是我遇到的一个问题,验证错误消息不是很有用,我认为它可能对搜索此问题的其他人有用。下面是我想出来的。这也可以修改以提供不同的信息。

include FactoryGirl::Syntax::Methods

# Right after you include Factory Girl's syntax methods, do this:

def create_with_info(*args, &block)
create_without_info(*args, &block)
rescue => e
raise unless e.is_a? ActiveRecord::RecordInvalid
raise $!, "#{e.message} (Class #{e.record.class.name})", $!.backtrace
end
alias_method_chain :create, :info

然后,当您使用 create :model_name 时,它将始终在错误消息中包含模型名称。我们有一些相当深的依赖(是的,另一个问题),并且有一个验证错误,比如“名称无效”...和 ​​ name是几个不同模型的属性。添加此方法后,可以节省大量调试时间。

关于ruby-on-rails - FactoryGirl 没有给出有用的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9825515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com