私のアプリでは、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
ダンプは、ループの3回目または4回目の反復からのものです。
編集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
それで...それはデータベースに保存されませんか?もしそうなら、私はそれをどのように修正する必要がありますか?