Через генератор rspec (я использую rspec-1.3.0, rspec-rails-1.3.2 gems) ( сценарий ruby / сгенерировать предложение rspec_model section_id: целое число user_id: целое субъект: строка содержимое: текстовое состояние: тип строки: строка
) Я создал модель и спецификацию модели и запустил rake db: migrate и rake: test: prepare
После этого я начал работать над моей моделью:
require 'spec_helper'
describe Suggestion do
before(:each) do
@valid_attributes = {
:section_id => 1,
:user_id => 1,
:subject => 'Inappropriate title',
:content => 'The title of this section is inappropriate.',
:state => 'new',
:type => 'flag'
}
end
it "should create a new instance given valid attributes" do
Suggestion.create!(@valid_attributes)
end
it "should reject empty section_id attribute" do
empty_section_id_suggestion = Suggestion.new(@valid_attributes.merge(:section_id => ""))
empty_section_id_suggestion.should_not be_valid
end
...
Помимо 1-го " Я не сталкивался с этой проблемой раньше (иметь несколько одинаковых моделей и их спецификации, проходящие правильно). Похоже, что у него есть проблема с атрибутом: type (он говорит, что он не может быть пустым), даже если я передаю ему значение через
@valid_attributes
. Я пытался выполнить поиск в Google, но не нашел подобную проблему / решение.
Вот тест для: type attribute
it "should reject empty type attribute" do
empty_type_suggestion = Suggestion.new(@valid_attributes.merge(:type => ""))
empty_type_suggestion.should_not be_valid
end
Пожалуйста, проверьте его и дайте мне знать, что я делаю здесь неправильно.
Большое спасибо за помощь
Peter
Итак, в конце концов я нашел ответ на проблему, связанную с атрибутом :type
:
http://www.gyrotechie.com/2008/09/activerecord-does-not-like -attributes-call-type/
Проблема заключалась в том, что type является зарезервированным именем поля для классов, наследуемых от ActiveRecord.
Я переименовал имя поля с помощью миграции и изменил все связанные файлы, и теперь все работает правильно.