Ruby on rails Ruby on rails,验证失败:国家可以';不要空白
这是我的控制器测试,当我运行它时,它显示:验证失败:国家不能为空 我是stackoverflow和ruby soo的新手,我得到的任何帮助都很棒 文件控制器:Ruby on rails Ruby on rails,验证失败:国家可以';不要空白,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,这是我的控制器测试,当我运行它时,它显示:验证失败:国家不能为空 我是stackoverflow和ruby soo的新手,我得到的任何帮助都很棒 文件控制器: it "renders index page" do projects_user = FactoryGirl.create(:projects_user) get :index, id: projects_user.id expect(response).to render_template :index end class
it "renders index page" do
projects_user = FactoryGirl.create(:projects_user)
get :index, id: projects_user.id
expect(response).to render_template :index
end
class FilesController < ApplicationController
before_filter :authenticate_user!
def index
@pu = ProjectsUser.find(params[:id])
debugger
@files = UserFile.includes(:user).where(project_id: @pu.id)
end
def new
@file = UserFile.new
end
def create
@file = UserFile.new(file_params)
if @file.save
flash[:success] = "File successfully uploaded!"
redirect_to files_path
else
@files = UserFile.includes(:user).where(user_id: current_user.id)
render :index
end
end
def destroy
@file = UserFile.find(params[:file_id])
if @file.destroy
flash[:success] = "File successfully deleted!"
redirect_to files_path
else
flash[:error] = "File could not be deleted."
redirect_to files_path
end
end
protected
def file_params
params.require(:user_file).permit(:file, :user_id, :created_at, :updated_at, :project_id)
end
end
错误输出:
require 'ffaker'
FactoryGirl.define do
factory :country do
name {FFaker::AddressUS.country}
end
end
ActiveRecord::RecordInvalid:
验证失败:国家/地区不能为空
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/configuration.rb:18:在“初始化中的块”中
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/evaluation.rb:15:in`[]'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/evaluation.rb:15:in'create'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/strategy/create.rb:12:在“结果块”中
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/strategy/create.rb:9:in'tap'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/strategy/create.rb:9:in'result'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/factory.rb:42:in'run'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/factory\u runner.rb:29:in“运行中的块”
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/factory\u runner.rb:28:in'run'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/strategy/create.rb:5:在“关联”中
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/evaluator.rb:33:在“关联”中
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute/association.rb:19:in`block in to_proc'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/evaluator.rb:77:in'instance\u exec'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/evaluator.rb:77:在“定义中的块”属性中
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute\u assigner.rb:56:in'get'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute\u assigner.rb:16:in `对象中的块(2层)'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute\u assigner.rb:15:in'each'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute\u assigner.rb:15:在“对象中的块”中
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute\u assigner.rb:14:in'tap'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/attribute\u assigner.rb:14:in'object'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/evaluation.rb:12:in'object'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/strategy/create.rb:9:in'result'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/factory.rb:42:in'run'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/factory\u runner.rb:29:in“运行中的块”
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/factory\u runner.rb:28:in'run'
#/home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory\u girl-4.8.0/lib/factory\u girl/strategy\u syntax\u method\u registrator.rb:20:在“定义中的块\u单数\u策略\u方法”中
#./spec/controllers/files\u controllers\u spec.rb:31:in'block(3层)in'
更新:
项目工厂,项目拥有多个国家和地区
ActiveRecord::RecordInvalid:
Validation failed: Countries can't be blank
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib /factory_girl/configuration.rb:18:in `block in initialize'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:15:in `[]'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:15:in `create'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:12:in `block in result'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `tap'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:5:in `association'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:33:in `association'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute/association.rb:19:in `block in to_proc'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `instance_exec'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `block in define_attribute'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:56:in `get'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in `block in define_singular_strategy_method'
# ./spec/controllers/files_controllers_spec.rb:31:in `block (3 levels) in <top (required)>'
需要“ffaker”
工厂女孩
工厂:项目办
赞助商名称“John Pare”
标题“Anea”
新的开始日期(2016年5月7日)
新的结束日期(2017年3月6日)
说明{FFaker::Lorem.段落}
计划“5”个站点的数量
预计入学人数“24”
可行性调查问卷文件。打开(“{Rails.root}/spec/internal_spec_files/app.pdf”)
关联:疾病类型
协会:疾病和条件
关联:用户
协会:项目组
关联:项目_子类别
在(:create)do|m之后|
m、 国家问题在
require 'ffaker'
FactoryGirl.define do
factory :project do
sponsor_name "John Pare"
title "Anea"
start_date Date.new(2016, 5, 7)
end_date Date.new(2017, 3, 6)
description {FFaker::Lorem.paragraph}
number_of_sites_planned "5"
estimated_enrollment "24"
feasibility_questionnaire File.open("#{Rails.root}/spec/internal_spec_files/app.pdf")
association :disease_type
association :disease_condition
association :user
association :project_category
association :project_subcategory
after(:create) do |m|
m.countries << build(:country)
end
end
创建代码(您定义此工厂的地方)未设置国家/地区,这就是您出现错误的原因。是否有任何代码验证国家/地区的存在<代码>验证:国家/地区,状态:true
或验证:国家/地区id,状态:true
如果是,则需要创建国家/地区模型的实例,并将其分配到需要国家/地区的模型1)“国家/地区”不能为空?或者“国家不能为空?”2)您说过当您运行测试时,会收到验证错误消息?然后错误很可能是由工厂创建引起的,可能是FactoryGirl.create(:projects\u user)
。3) 显示错误的堆栈跟踪,并显示调用错误的相应代码。这将有助于我们检查问题。在project.rb模型中有validates:countries presnece:true
ActiveRecord::RecordInvalid:
Validation failed: Countries can't be blank
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib /factory_girl/configuration.rb:18:in `block in initialize'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:15:in `[]'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:15:in `create'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:12:in `block in result'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `tap'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:5:in `association'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:33:in `association'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute/association.rb:19:in `block in to_proc'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `instance_exec'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `block in define_attribute'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:56:in `get'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run'
# /home/nemanja/.rvm/gems/ruby-2.1.2/gems/factory_girl-4.8.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in `block in define_singular_strategy_method'
# ./spec/controllers/files_controllers_spec.rb:31:in `block (3 levels) in <top (required)>'
require 'ffaker'
FactoryGirl.define do
factory :project do
sponsor_name "John Pare"
title "Anea"
start_date Date.new(2016, 5, 7)
end_date Date.new(2017, 3, 6)
description {FFaker::Lorem.paragraph}
number_of_sites_planned "5"
estimated_enrollment "24"
feasibility_questionnaire File.open("#{Rails.root}/spec/internal_spec_files/app.pdf")
association :disease_type
association :disease_condition
association :user
association :project_category
association :project_subcategory
after(:create) do |m|
m.countries << build(:country)
end
end
projects_user = FactoryGirl.create(:projects_user)