【问题标题】:undefined method `to_sym' for 1:Fixnum1:Fixnum 的未定义方法“to_sym”
【发布时间】:2014-01-12 13:02:54
【问题描述】:

我有一个简单的模型,其中序列作为整数的属性。当我将序列设置为 1 时,它会通过简单的测试用例,即:

  context 'MathFactAttemptData' do
    it 'should insert rows' do
      math_fact_attempt_data  = FactoryGirl.build :math_fact_attempt_data

      @params[:request_params]         = {
          user_data: {
              math_fact_attempt_data: [JSON.parse(math_fact_attempt_data.to_json)]
          }
      }

      initial_math_fact_attempt_data_count = MathFactAttemptData.unscoped.count

      post api_v3_user_data_path, @params
      response.should be_success

      response_body = JSON.parse response.body
      response_body['user_data'].should be_nil
      response_body['seed_data'].should be_nil

      MathFactAttemptData.unscoped.count.should == initial_math_fact_attempt_data_count + 1

    end
  end

工厂:

factory :math_fact_attempt_data do
 association :user, factory: :student
 association :math_fact_attempt, factory: :math_fact_attempt
 association :problem_type, factory: :problem_type
 num1 1
 num2 1
 correct_answer 1
 response 1
 correct 1
 #sequence 1
 time_spent 1
 choice_type "MyString"
 selected_operator "MyString"
end

取消注释序列使测试用例失败并出现问题,即:

   API v3 POST /user_data.json Entities MathFactAttemptData should insert rows
         Failure/Error: math_fact_attempt_data  = FactoryGirl.build :math_fact_attempt_data
         NoMethodError:
           undefined method `to_sym' for 1:Fixnum
         # ./spec/requests/api/v3/post_user_data_spec.rb:1116:in `block (5 levels) in <top (required)>'

    Finished in 3.7 seconds
    1 example, 1 failure

    Failed examples:

    rspec ./spec/requests/api/v3/post_user_data_spec.rb:1115 # API v3 POST /user_data.json Entities MathFactAttemptData should insert rows

【问题讨论】:

  • 高度相关:stackoverflow.com/questions/4062929/…。请参阅“编辑:”。
  • 准确引用的to_sym 方法在哪里?
  • @RichPeck math_fact_attempt_data = FactoryGirl.build :math_fact_attempt_data

标签: ruby-on-rails ruby-on-rails-3 rspec factories


【解决方案1】:

正如彼得所指出的,sequence 是一个 FactoryGirl 方法。

试试这个来设置序列属性:

FactoryGirl.define do
  factory :math_fact_attempt_data do
    add_attribute :sequence, 1
  end
end

【讨论】:

    【解决方案2】:

    sequence 是一个 FactoryGirl 方法,它需要一个符号作为它的第一个参数。这就是为什么你会得到你得到的错误。

    【讨论】:

    • 那么解决办法是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多