生成没有父资源的嵌套资源的 URL(不使用 shallow)

Generating the URL of a nested resource without its parent (without using shallow)

在我们的应用程序中,许多资源嵌套在代表组织的公共资源下。大多数 URL 包含组织 ID,格式如下:/:organization_id/notifications/:id.

我的问题是,我总是必须给当前组织生成 URL 给任何模型。例如,现有通知的 link 将是 link_to [@organization, @notification].

由于通知已经属于一个组织,我想知道是否可以使用 link_to @notification 生成我的 URL,它实际上会生成一个包含组织 ID 的 URL的通知。我希望模型中的配置能够实现这一点,但我在指南、文档或 Rails.

的源代码中找不到任何内容

我想让组织 ID 在 URL 中可见,因为这是我们的客户使用的信息。所以我不想使用浅嵌套资源来解决这个问题。

我们正在使用 Rails 5.2.0.

你想要 resolve route definition method.

它旨在完全满足您的需求:在将单个模型实例传递给 url_for 时配置不同的行为(例如 link_to 所做的)。

具体来说,在您的 config/routes.rb 中,类似于:

resolve("Notification") do |note|
  [:notification_organization, note.organization, note]
end

听起来您的方向是正确的 -- 这只是一个路由问题,而不是模型问题。