3
根據documentation for ActiveRecord::Associations::ClassMethods,ActiveRecord可以自動確定一個模塊的關聯是否與另一個模型的has_one
或has_many
關聯相反。然而,我想確保這個檢測實際上成功了一些我不確定的關聯(例如,我有一個belongs_to
,它不完全匹配其他模型的名稱,但有class_name
集合)。有沒有辦法檢查inverse_of
檢測是否應用於特定關聯?理想情況下,我會在項目的測試套件中添加一些內容以確保該關聯是雙向的。如何檢查ActiveRecord的inverse_of檢測是否有效?
這不完全是你要求的,但你應該在關聯上設置「:inverse」選項,而不是讓Rails自動計算反比關係,如果你想在某處使用「反向」功能。 –
@MaxWilliams不,你不應該。這是一個完美的配置慣例。我認爲編寫多餘的代碼不是rails的方式,即如果Rails> = 4.1的自動反轉檢測機制已經選擇了它,那麼寫一個'inverse_of'選項是沒有意義的。此外,我遇到的案例中有99%不是關於功能,而是性能提升,所以沒有槓桿作用,仍然有優勢。問題是關於是否很難確定是否已經檢測到逆。 –
我認爲從可讀性/自我記錄代碼的角度來看,它有很多意義:如果選項a)保證Rails能夠做正確的事情,並且b)讓同事明白某些不尋常的事情正在發生,那麼什麼是傷害? –