Rails 3多站点(与id关联)?

时间:2012-01-17 07:43:06

标签: ruby-on-rails ruby-on-rails-3

所以我正在开发一个新的rails项目,该项目涉及从单个rails安装运行多个网站。我很困惑如何在不嵌套资源的情况下进行关联。

  

注意:我正在使用子域名,因此url将是site1.ex.com/photos,   site2.ex.com/ramps

例如,我现在有一个名为网站1 的网站,网站1 包含照片,视频和网站。我可以通过告诉rails网站has_many来做关联:照片,:视频,:ramps(代码格式不正确只是给你的想法)。一切正常,包括网址,但这是我的问题。

  1. 网站包含在网址中,这是我不想要的(例如example.com/sites/1/photos)。
  2. 协会工作正常,但如果我想让父母为3件物品怎么办? Rails建议你不要将路线嵌套在1级以上。 enter image description here
  3. 这是我想做的 enter image description here

    1. 如何在不使用嵌套资源的情况下调用网站之间的关联(无法使用album_id捕获site_id作为照片)?
    2. 如果相册 has_many:照片 belongs_to:site ,如何在我的控制器中调用该照片(任何示例)?
    3. Am rails newb所以我添加了图片,这样有人可以理解我想要完成的任务。

1 个答案:

答案 0 :(得分:1)

如果您使用子域,则不必使用sites的嵌套资源。要查找网站:

class ApplicationController < ActionController::Base

  before_filter :find_site_by_subdomain

  def find_site_by_subdomain
    @site = Site.find_by_subdomain!(request.subdomain)
  end

end

对于所有其他资源,您不将它们嵌套在Site下,而是将它们用作父级(相册/照片,视频,斜坡)。在您的AlbumsController中,您只需要拥有当前子域名的网站,因此您可以使用ApplicationController中的before_filter并使用@site对象:

class AlbumsController < ApplicationController

  …

  def show
    @album = @site.albums.find(params[:id])
  end

  …
end