在我的项目中,user将有许多>项目,在项目制作时,有一层空白点是Datetime.now
。
# item.rb
class Item < ActiveRecord::Base
before_create :calculate_onshelf_time
default_scope :order => items.onshelf_at DESC
def calculate_onshelf_time
self.onshelf_at = DateTime.now
end
end
在用户模型测试中,我试图说服自己相信检索的命令确实是items.onshelf_at DESC
。 因此,我做了以下几句,但结果却被逆转。 (姓名:[@item1,@item2]
)
# spec/models/user_spec.rb
before :each do
@user = User.create(@attr)
@item1 = Factory(:item, :owner=>@user, :onshelf_at => 2.days.ago, :created_at => 2.days.ago)
@item2 = Factory(:item, :owner=>@user, :onshelf_at => 1.day.ago, :created_at => 1.day.ago)
end
it "should have the right items in the right order" do
@user.items.should == [@item2, @item1]
end
我检查了女工厂,发现onshelf_at 是倾听女工厂初创的。 相反,它沿用了在“create 规则”之前,并用试验时间来估价!
Failure/Error: @user.items.should == [@item2, @item1]
expected: [#<Item id: 2, description: "this is an item", img_link: "http://www.example.com/photos/some_pic.jpg", category_id: 5, onshelf: true, created_at: "2011-11-20 11:19:15", updated_at: "2011-11-21 11:19:15", onshelf_at: "2011-11-21 11:19:15", owner_id: 1>, #<Item id: 1, description: "this is an item", img_link: "http://www.example.com/photos/some_pic.jpg", category_id: 5, onshelf: true, created_at: "2011-11-19 11:19:15", updated_at: "2011-11-21 11:19:15", onshelf_at: "2011-11-21 11:19:15", owner_id: 1>]
got: [#<Item id: 1, description: "this is an item", img_link: "http://www.example.com/photos/some_pic.jpg", category_id: 5, onshelf: true, created_at: "2011-11-19 11:19:15", updated_at: "2011-11-21 11:19:15", onshelf_at: "2011-11-21 11:19:15", owner_id: 1>, #<Item id: 2, description: "this is an item", img_link: "http://www.example.com/photos/some_pic.jpg", category_id: 5, onshelf: true, created_at: "2011-11-20 11:19:15", updated_at: "2011-11-21 11:19:15", onshelf_at: "2011-11-21 11:19:15", owner_id: 1>] (using ==)
我如何确定这一点?