我正在使用ruby v1.9.3和factory_girl v2.2并试图设置特征。但是当我尝试使用我的特性时,我得到了这个错误。是因为我使用的红宝石版本?
Failure/Error: let!(:notification) { create(:notification, :confirmable) }
NoMethodError:
undefined method `symbolize_keys' for :confirmable:Symbol
# ./spec/controllers/api/v1/sms_controller_spec.rb:13:in `block (3 levels) in <top (required)>
这是我的工厂:
FactoryGirl.define do
factory :notification do
smssid { Faker::Number.number(10) }
msg { Faker::Lorem.sentence(3) }
to { Faker::PhoneNumber.phone_number }
trait :confirmable do
confirmable "true"
end
end
end
规格:
require 'spec_helper'
describe Api::V1::SmsController do
let!(:user) { create(:user) }
describe "GET /api/v1/user/sms" do
let!(:notification) { FactoryGirl.create(:notification, :confirmable) }
context "a user replies to a confirmation with c" do
it "does something" do
get :incomming_message, :sid => notification.smssid,
:to => notification.to,
:from => user.phone_number,
:body => "c",
:status => "recieved",
:format => :json
notification.reload
notification.confirmed.should eq(true)
end
end
end
end
***编辑,使用我的spec文件更新
答案 0 :(得分:-1)
不,您使用的Ruby版本与symbolize_keys
无关,因为它不是Ruby核心的一部分。 1.9.3和2.2.2都不包含它。相反,symbolize_keys
是Hash类的ActiveSupport扩展。您必须加载Active支持才能使其正常工作。请参阅:Rails-4.2.5 : Object::HashWithIndifferentAccess < Hash。
由于这是一个我错过的RoR问题(mea culpa),问题显然在于将confirmable
声明为符号而不是哈希。但是,在任何一种情况下,使用的Ruby版本都与问题无关。