Я настраиваю пользовательскую проверку, которая проверяет, проголосовал ли пользователь за альбом перед отправкой обзора. Проверка достоверности выполняется на стороне клиента, но когда дело доходит до запуска моих тестов Rspec, я, похоже, сталкиваюсь с некоторыми проблемами.Выполнение пользовательских проверок с помощью специальных методов gem
В валидации используется метод Acts As Votable gem's voted_for?. К сожалению, здесь все плохо. Для моих без пользовательских проверок (которые работают регулярно кстати) я получаю сообщение об ошибке, как это:
3) Review validations should ensure body has a length of at least 40
Failure/Error: it { should validate_length_of(:body).is_at_least(40) }
NoMethodError:
undefined method `voted_for' for nil:NilClass
Что мне нужно сделать для того, чтобы этот метод, чтобы быть признанным?
Обзор Модель
class Review < ActiveRecord::Base
belongs_to :album
belongs_to :owner, class_name: "User", foreign_key: :user_id
validates :body, presence: true, length: { minimum: 40 }
def album_vote
if !owner.voted_for?(album)
errors.add(:review, "requires an album vote before submitting")
end
end
end
Обзор Завод
FactoryGirl.define do
factory :review do
body { Faker::Lorem.paragraph(2) }
album
association :owner, factory: :user
end
end
Ошибка также может быть связано с тем, как вы ссылаетесь на заводе в тесте. – max
Да, похоже, что необходимо проверить наличие ранее существовавшего «владельца» в условном выражении. Спасибо Макс! –