Използването на масово присвояване трябва да съвпада в 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)

докато следният тест е успешен (по този начин се установява, че Shoulda присъства):

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