Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby on rails,验证失败:国家可以';不要空白_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails Ruby on rails,验证失败:国家可以';不要空白

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

这是我的控制器测试,当我运行它时,它显示:验证失败:国家不能为空

我是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 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)