顯示數據我熟悉的方針沒有嵌套超過1級深,我瞭解同時具有在最短的URL的各種討論並沒有代碼。的Rails 4.2+:深嵌套資源時,它需要從整個資源鏈
大部分StackOverflow的問題和谷歌上搜索我已經提出使用情況下,一個沒有訪問所有元素在整個鏈條進行回答這個問題。
但是如果你有進一步訪問父資源,環比上漲爲你正在使用的每一個網頁你會怎麼做?
/{ACCOUNT_SLUG}/applications/{APPLICATION_UUID}/borrower/employments/{UUID}
當與單個employment
記錄處理,我要顯示帳戶的特定信息經由ACCOUNT_SLUG
採取從父account
對象,以及application
信息。上和技術上,我borrower
也是一個DB查詢,但由於只有1爲每個應用程序,我沒有在URL中添加一個id /塞。
一般的建議是做一些事情,如:
/employments/{UUID}
但如果我這樣做,然後在我的控制器代碼(和其他地方)我還要做:
@employment = Employment.find_by(uuid: params[:uuid])
@account = @employment.borrower.application.account
所以我必須遍歷整個父關聯鏈並執行這些關聯數據庫查詢。一個人如何解決這種從第一個父母到最後一個孩子必須保持深層嵌套關係的情況?
1:添加關聯屬性所有的孩子們
class Employment
belongs_to :borrower
belongs_to :application
belongs_to :account
end
現在我有一大堆協會事情無處不在,只是走一個清晰的鏈條。這似乎是「依賴地獄」給我......
2:深嵌套的路線去; Github上做它
我注意到其實Github上採用深嵌套的路線:
github.com/{USERNAME}/{REPO}/settings/hooks
雖然沒有深度嵌套爲我的使用情況下,他們仍然窩一切username
和repo
下,和如果你列出自己的詳細地址是:
/github.com/accounts/{USERNAME}/repos/{REPO_NAME}/settings/hooks
是任何人都知道,如果有Github上的方法優化這個深度嵌套,或者他們只是找了account
和repo
每個請求和咬DB查詢開銷(也許不是什麼大不了的事......)?
3:深窩的路由,而讓自己的網址助手,以保持它的清潔
使用/{ACOUNT_SLUG}/applications/{APPLICATION_UUID}/borrower/employments/{UUID}
,網址助手看起來像:
account_applications_borrower_employments_path(@account, @application, @borrower, @employment)
這可以被清理使用一些幫手:
def borrower_employment_path(@employment)
@borrower = @employment.borrower
@application = @borrower.application
@account = @application.account
account_applications_borrower_employments_path(@account, @application, @borrower, @employment)
end