Консоль Rails возвращает допустимый оператор, в то время как тест завершается с ошибкой

#ruby-on-rails

#ruby-on-rails

Вопрос:

Для модели, определенной с помощью

 belongs_to :municipal
validates  :name, presence: true
has_one    :gdstore, dependent: :destroy
  

в консоли

 Neighbourhood.new(name: 'red distrikt').valid?
=> false
Neighbourhood.new(municipal_id: 3272, name: 'red distrikt').valid?
=> true
  

но запуск этого теста

 test "valid if name and municipal id defined" do
  neighbourhood = Neighbourhood.new(municipal_id: 3272, name: 'red distrikt')
  assert neighbourhood.valid?
end
  

ВОЗВРАТ

 Failure:
NeighbourhoodTest#test_valid_if_name_and_municipal_id_defined [/Volumes/SJT/r/gd /test/models/neighbourhood_test.rb:20]:
Expected false to be truthy.
  

Схема БД подтверждает:

 create_table "neighbourhoods", force: :cascade do |t|
  t.bigint "municipal_id", null: false
  

итак, что здесь происходит? Примечание: обратное утверждение также генерирует ошибку. Я не ожидаю, что has-one создаст недействительность, поскольку у него может не быть gdstore…

Ответ №1:

Хорошо … не было приспособления для municipal with id: 3272 , следовательно, ошибка тестирования.