У меня есть одна модель (обсуждение), которая имеет одну другую модель (видимость). Там в before_validation :on => :create
вызов для обсуждения модели, которая устанавливает значение на visibility
, а именно:Исключение RSpec при проверке присутствия
class Discussion
has_one :visibility
validates_presence_of :some_unrelated_field
before_validation :set_visibility_relationship, :on => :create
private
def set_visibility_relationship
visibility.some_entity = self.the_same_entity
end
end
я тогда следующее в моем discussion_spec.rb
:
it { should validate_presence_of(:some_unrelated_field) }
before_validation бросает ошибку:
Failure/Error: it { should validate_presence_of :some_unrelated_field }
NoMethodError:
undefined method `visibility.some_entity' for #<Discussion:0x007ff6ebc43170>
Если я прокомментирую либо звонок before_validation
, либо should validate_presence_of
для несвязанных поле, все мои тесты проходят.
Я попытался сделать шаг с помощью pry, и я обнаружил, что одним из ключей ошибки, установленным в дискуссии, является «visibility.some_entity», а все остальные ключи были основаны на атрибутах, например: «some_unrelated_field». Похоже, может быть какая-то ошибка в rspec, которая вызывает эту ошибку, но я могу просто делать что-то неправильно.
В вашей модели обсуждения есть ли 'has_one: видимость'? –
Есть, извините, я оставил это из кода. Отредактировано, чтобы включить его в пример. –