2017-06-13 51 views
0

我解決了我的問題,但我有0個想法,爲什麼發生這種奇怪的錯誤?.all.length與before_create中的長度 - 瘋狂行爲!?有人可以解釋這個嗎?

我在我的會員模型中有一個before create動作。

成員資格可以屬於組織。組織has_many成員資格。

before_create :check_payment_plan

然後我在check_payment_plan方法中的一些邏輯。它所做的是無關緊要的。正如我發現以下行爲:

當方法是這樣的:

def check_payment_plan 
    puts self.organization.memberships.length 
end 

**The membership is not created.** 

當方法是這樣的:如果有人爲的情況下

def check_payment_plan 
    puts self.organization.memberships.all.length 
end 

**The membership is created.** 

所以,以供將來參考模型不會在before_filter中創建,如果遵循上述模式,則會使用.all.length。

任何人都可以解釋爲什麼這是發生?!

+0

你是什麼意思**沒有創建成員。**'你在做什麼'self.organization.memberships.length'? –

+0

計數/長度如何創建模型? –

回答

1

實際上,您可以將其簡化爲self.organization.memberships.count,它可以在數據庫級別進行計數,這可能會解決您遇到的問題。

0

最好的猜測是模型只是一個單一實例的代表而不是全部。這就是爲什麼你必須先打電話。

相關問題