Ruby on rails 3 创造!未在rails3中设置datetime属性

Ruby on rails 3 创造!未在rails3中设置datetime属性,ruby-on-rails-3,rspec,Ruby On Rails 3,Rspec,我的一个模型中有一个datatime属性在处获取,它将记录何时进行测试。我试图通过以下行验证此字段是否始终存在于我的模型中: validates :taken_at, :presence => true 在我的rspec测试中,我将通过以下测试验证此规则: before (:each) do @user = Factory(:user) @attr = { :taken_at => DateTime.now } end it "should create a new pr

我的一个模型中有一个datatime属性
处获取,它将记录何时进行测试。我试图通过以下行验证此字段是否始终存在于我的模型中:

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
正如您所看到的,我在块内设置
take\u,而不是将其作为参数传入。这是可行的,但我不明白为什么以下测试会失败:

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

有人知道这里发生了什么吗?如果您有任何提示、技巧或文档指针,我们将不胜感激。

您的第二个示例使用大量赋值,而第一个示例使用直接赋值。你有没有改变禁止大规模的分配到拍摄地点?

就是这样。我在模型中定义了
attr\u accessible
。谢谢你的解释。