【问题标题】:Rails nested resources, how do I create two new resources when I need the other's id in the GET request?Rails 嵌套资源,当我在 GET 请求中需要另一个的 id 时如何创建两个新资源?
【发布时间】:2014-02-15 11:50:32
【问题描述】:

正如标题所暗示的那样。我有两个模型,路线是这样的:

resources :users do
  resources :books
end

- 这正是我正在寻找的那种网址。问题是我需要有一个逻辑,一个登录的用户可以进入并点击“创建书”,并在新页面中选择点击“新用户”或“我有一个帐户”,它通过 javascript 为新用户加载一个包含所有参数的表单,或者加载一个只有电子邮件和密码的表单。我如何创建这条工作路线?有了这些路线,我似乎得到了路径/users/:user_id/books/new,但是我需要用户的 ID,而我没有。

有什么想法吗?

顺便说一句。用户 has_many :books, Book belongs_to :user.

【问题讨论】:

    标签: ruby-on-rails resources routes nested


    【解决方案1】:

    只添加不带用户ID的路​​由:

    # with user_id
    resources :users do
      resources :books
    end
    # without user_id
    resources :books
    

    顺便说一句,在 URL 中包含用户 ID 看起来很危险。这意味着任何人都可以访问任何用户的书籍,只需更改 URL。当前用户的 ID 根本不应出现在您的路由中,而应始终使用 cookie 或会话。

    【讨论】:

    • 啊……我明白了。我将重写它以使用会话。并不是说我会反对在这里使用会话,但我想你可以限制用户只能看到他自己的书,不是吗?谢谢你的回答。
    • 是的,这是可能的,但暴露用户 ID 充其量是笨拙的,最坏的情况是危险的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2016-06-09
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多