Использование Mass Assignment Shoulda Matchers в Rspec с Rails 2.3.x

Shoulda-matchers для Rspec не поддерживает allow_mass_assignment_of для классов ActiveRecord.

В качестве обходного пути вы считаете следующий код эквивалентным?

it { should_not allow_mass_assignment_of :id }

it { MyClass.protected_attributes.include?("id").should be_true }

person auralbee    schedule 03.11.2011    source источник


Ответы (2)


Согласно исходному коду, оба эквивалентны, но первая строка должна работать корректно. Вы можете проверить это на https://github.com/thoughtbot/shoulda-matchers/blob/master/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb

person Eduardo Sampaio    schedule 04.11.2011

Я тоже испытываю эту проблему. Следующий тест:

it should allow_mass_assignment_of(:email)

не работает с сообщением об ошибке

undefined method 'allow_mass_assignment_of' for #<Class:0x1044de9c8> (NoMethodError)

в то время как следующий тест проходит успешно (таким образом устанавливается, что должен присутствовать):

it should validate_uniqueness_of(:email)

shoulda-matchers версии 1.0.0, rspec (и все связанные с ним драгоценные камни) версии 2.8.0

Не похоже, но может ли это как-то быть связано с этой проблемой: https://github.com/mergulhao/shoulda-matchers/commit/3a75c6877c07fbf62e77b1fb0aa852138bd537d6

person Jack R-G    schedule 07.01.2012