Как я могу получить хэш содержимого экземпляра приспособления Rails?
Это использование Rails 4.2.0, Ruby 2.2.0.
Что я хотел бы сделать, так это использовать данные, содержащиеся в объекте fixture, чтобы проверить, что дубликаты пойманы перед вставкой в ту же базу данных:
test "identical entries should be impossible to create" do
dup_entry = Entry.new(entries(:test_entry))
assert_not dup_entry.save
end
(где Entry
-хорошо определенная модель с методом контроллера .new
, а test_entry
- приспособление, содержащее некоторый допустимый экземпляр Entry
.)
К сожалению, это не работает, потому что entries(:test_entry)
будет Entry
, а не хэш, принятый Entry.new
.
Я знаю, что я можно получить доступ к свойствам fixture с выражением вида fixture_objname.property
в соответствующих тестах, так как все, что указано в YAML, будет автоматически вставлено в базу данных и загружено. Проблема в том, что мне приходится вручную перепечатывать кучу имен свойств для объекта, который я только что указал в YAML, что кажется глупым.
В документации также говорится, что я могу получить фактические экземпляры модели, добавив self.use_instantiated_fixtures = true
в тестовый класс. Однако, похоже, их нет. любой instance_methods
, который будет сбрасывать экземпляр модели приспособления (test_entry
) в хэш-формате для обратной передачи в Метод .new
.