是否存在特定的一種或多種模式,我可以通過研究來解決這種情況。導軌訪問相關型號屬性的最佳實踐
我正試圖用最好的方式來訪問相關模型的屬性,有時遠程相關的模型。
一個簡單的例子:
class Customer
has_many :sites
end
class Site
# Customer is not required
belongs_to :customer
has_many :slips
end
class Slip
belongs_to :site
end
我有一個顯示有關特定單信息的報告。 在該報告中,我想引用客戶的全名,它是來自Customer中複雜方法的幾個字段的串聯。
現在,我認爲這是最好不要做slip.site.customer.full_name:
1)的關聯是模型之間太緊,好像我需要知道太多關於擴展關係和使我的代碼變得脆弱。 2)我不得不做一個零測試,如果沒有客戶的網站。 3)2,我在哪裏進行測試,當然最好在Site中有一個像customer_full_name這樣的方法,但是如果它只用於Slip和Customer,那麼混淆網站似乎是錯誤的。
在這個例子中,我只有一個擴展關係,但是如果我有屬於網站的門票,並且我需要相同的信息。
接縫最好創建一個單獨的幫助器接受參數以生成所需輸出的類?
不,事實上我甚至沒有完全意識到它,我已經看到它在一些地方使用,但從來沒有理解它的功能。 – user564372