在我的应用程序中,puts self.ideas.inspect
输出:
[#<Idea id: 1, title: "Ad et ut nesciunt ut.",
note: ["Ratione et aut harum.", "Dicta nostrum sit officiis voluptates molestiae veritatis ut."],
status: "claimed",
created_at: "2012-12-27 19:03:11", updated_at: "2012-12-27 19:03:11", user_id: 1>,
#<Idea id: 2, title: "Asperiores dolores modi et.",
note: ["Reprehenderit harum consequuntur repellendus qui.", "Labore eum minus voluptas quidem aliquid est occaecati."],
status: "claimed",
created_at: "2012-12-27 19:03:11", updated_at: "2012-12-27 19:03:11", user_id: 1>,
#<Idea id: 3, title: "Labore nam deserunt quibusdam.",
note: ["Sequi saepe itaque.", "Numquam distinctio vel hic et qui."],
status: "claimed",
created_at: "2012-12-27 19:03:11", updated_at: "2012-12-27 19:03:11", user_id: 1>]
然而在下一行,claimed_count = self.ideas.where(status: "claimed").size
返回 0。我的查询语法显然是错误的,但我一直在仔细研究本指南,但我仍然无法弄清楚!
必须是非常基本的东西......有人吗?
编辑:我使用以下测试获得了这些想法:
it "can't claim an idea if he already has 3 ideas with claimed status" do
james.claim(si_title0)
james.claim(si_title1)
james.claim(si_title2)
james.claim(si_title3)
james.ideas.size.should eq 3
end
我很抱歉这个丑陋的测试......我打算在我通过后试图找出重构它的插值。上面的inspect
转储来自循环的第三或第四次迭代。
编辑2:这就是claim
:
def claim(idea)
puts self.ideas.inspect
#claimed_count = self.ideas.where(status: "claimed").count
claimed_count = self.ideas.count(conditions: "status='claimed'")
puts "claimed_count is #{claimed_count.inspect}"
if idea.status == "available" && claimed_count < 3
self.ideas<<idea
idea.status = "claimed"
end
end
那么......它不会保存到数据库中吗?如果是这样,我应该如何解决这个问题?