显示数据我熟悉的方针没有嵌套超过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