轨新元素HAS_MANY通过
问题描述:
我有以下型号:轨新元素HAS_MANY通过
class Party < ActiveRecord::Base
has_many :party_characters
has_many :characters, :through => :party_characters
...
我的控制器上,我有以下代码:
def new
@party = Party.new
p @party.characters.any?
p @party.characters
p @party.characters.any?
...
写入以下控制台:
true
[]
false
为什么any?
方法在print和false之前返回true?
答
试图在控制台上同样的事情,得到了以下结果
1.9.3p0 :003 > p = Party.new
=> #<Party id: nil, name: nil, created_at: nil, updated_at: nil>
1.9.3p0 :004 > p.characters.any?
(17.9ms) SELECT COUNT(*) FROM "characters" INNER JOIN "party_characters" ON "characters"."id" = "party_characters"."character_id" WHERE "party_characters"."party_id" IS NULL
=> true
1.9.3p0 :005 > p.characters
=> []
1.9.3p0 :006 > p.characters.any?
=> false
所以我决定来检查我的party_characters桌子上,发现项具有有效character_id但具有无方ID。我删除了这些和一切工作假设。
it returns false [] false on my box。 – bento 2012-07-27 23:37:13
@bento如果它是任何帮助我使用红宝石1.9.3p0和轨3.2.6 – dcarneiro 2012-07-29 00:08:47
应该足够接近,因为我说,无法再现它 - 你能吗? – bento 2012-07-29 00:16:58