我已经为手动测试创建了一个单独的数据库,但是当我尝试将Factory创建到数据库时遇到了上述错误。
以下是工作流程:
`rails c test`
`FactoryGirl.create(:reverification_tracker)
`ArgumentError: bad argument (expected URI object or URI string)
from /Users/drubio/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/uri/common.rb:715:in `URI'
这是我试图创建的工厂及其附带的协会:
FactoryGirl.define do
factory :reverification_tracker do
association :account
message_id 'XYZ0-1234-AB56-67GJ'
feedback ''
phase 0
status 0
attempts 1
sent_at DateTime.now.utc
created_at DateTime.now.utc
updated_at DateTime.now.utc
end
FactoryGirl.define do
sequence :account_login do |n|
"login-#{n}"
end
factory :account do
sequence :email do |n|
"someone#{n}@gmail.com"
end
email_confirmation { |account| account.send :email }
url { Faker::Internet.url }
login { generate(:account_login) }
password { Faker::Internet.password }
password_confirmation { |account| account.send(:password) }
current_password { |account| account.send(:password) }
twitter_account 'openhub'
name { Faker::Name.name + rand(999_999).to_s }
about_raw { Faker::Lorem.characters(10) }
activated_at { Time.current }
activation_code nil
country_code 'us'
email_master true
email_kudos true
email_posts true
association :github_verification
end
为什么会这样?在开始时我注意到在我的本地路径目录中有ruby-2.2.3
和ruby 2.2.0
另外,您会注意到我的帐户工厂上有一个网址字段。我使用faker
gem创建了一个测试网址。据我所知,似乎没有问题。此外,我的帐户模型的url_format
验证设置为true
,验证定义如此
class UrlFormatValidator < ActiveModel::EachValidator
# With Ruby 2.2, the default URI parser is more forgiving than we want, so use the same trick Rails does in Rack
# see: https://bugs.ruby-lang.org/issues/10669
def validate_each(record, attribute, value)
valid_url = begin
@parser ||= defined?(URI::RFC2396_Parser) ? URI::RFC2396_Parser.new : URI
@parser.parse(value).is_a?(URI::HTTP)
rescue URI::InvalidURIError
false
end
record.errors.add(attribute, options[:message] || I18n.t('accounts.invalid_url_format')) unless valid_url
end
end
然而,我确信这也不是问题所在。我想知道是否有其他人以前遇到过这个问题。我在这个网站上看到了与xhr
类似的问题,但它并不完全符合我的需要。任何见解都会非常有用。