Создайте!не установлен атрибут datetime в rails3 - PullRequest
0 голосов
/ 21 марта 2011

У меня есть атрибут datatime taken_at в одной из моих моделей, который будет записывать, когда был выполнен тест.Я пытаюсь проверить, что это поле всегда присутствует в моей модели со следующей строкой:

validates :taken_at, :presence => true

В моих тестах rspec я проверяю это правило с помощью следующего теста:

before (:each) do
  @user = Factory(:user)
  @attr = { :taken_at => DateTime.now }
end

it "should create a new profile given valid attributes" do
  # set taken_at inside of a block because the validations fail otherwise.    
  @user.hartman_value_profiles.create! do |hvp|
    hvp.taken_at = DateTime.now
  end
end

Как видите, я устанавливаю taken_at внутри блока, а не передаю его как параметр.Это работает, но я не понимаю, почему следующий тест не пройдёт:

it "should create a new profile given valid attributes" do    
  @user.hartman_value_profiles.create!(@attr)
end

Кто-нибудь знает, что здесь происходит?Будем весьма благодарны за любые советы, подсказки или указатели к документации.

1 Ответ

1 голос
/ 22 марта 2011

Ваш второй пример использует массовое назначение, тогда как первый пример использует прямое назначение. Запрещали ли вы каким-либо изменением массовое присвоение take_at?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...