新手问题 Rails 需要登录才能进行操作的 action 是否使用 collection 会好一点?

hastings · 2015年01月13日 · 最后由 heylonj 回复于 2015年01月15日 · 1807 次阅读

需要登录才能进行操作的 action 是否使用 collection 会好一点?

这是路由配置相关的问题

你是说 route 的 collection 和 member 吗? 这个主要是看具体的资源和操作来决定的

是的,主要是某些操作必须是登录后才能操作,比如拉取公司的通讯录,id 是公司的 id,但通过人已经能找到公司了

沒覺得這兩者之間有什麼關聯啊...樓主能不能說具體點

我觉得 collection 和 member 的选择问题应该决定于动作所影响的目标吧。如果目标是指定的一个,就用 member,如果目标不确定,用 collection。

#3 楼 @hastings

看 lz 三楼的回复,我理解的情况是:用户要访问一个 url: /公司通讯录/公司通讯录 id/某个 action,但是在登录用户的 model 里面可能就包含“公司通讯录 id”了,问这个时候是不是不必要让”公司通讯录 id"出现在 url 中?

如果是这样我认为可以把 route 改为: /我的公司/某个 action。不知道我的理解是不是正确。

楼主说的是嵌套资源路由吧。让访问权限体现在 URL 里是比较好处理一点,Basecamp 是这样,Github 也是这样。

@heylonj 是这样的,个人要获取公司的通讯录,/users/:company_id/address_list, 但这个 company_id 在 current_user 这里是能找到的,而 current_user 是记在 sessions 中的,在 address_list 这里获取公司也是用 current_user.company 来获取的,这时:company_id 是完全没有用到的,而且这个通讯录非该公司的员工是无法获取的。在这种情况下,url 中的:conpany_id 是否有必要去掉,不使用 member,换成 collection

#7 楼 @hastings 既然 user 信息存储在 session,company_id 又可以在 user 中得到,url 中:company_id 是可以去掉,使用 collection 或者 member 都可以,看个人喜好了。 但是我个人认为,可以考虑使用/mycompany/address_list 这样的 route。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号