我目前正在开发2个具有相同功能的单个客户端站点,但客户端希望在后端组合管理员以方便使用。这些站点将共享一个数据库,用户表等。
如何设置Rails应用程序,以便域名是唯一的标志,用于确定用户注册的网站,以及他们登录时看到的内容?
我有两个摄影网站: photosoftrains.com 和 planephotos.com 。这些网站将具有相同的功能,但视觉设计完全不同。访问 photosoftrains.com 的网站访问者应该看到火车站点(火车背景,火车内容,火车照片)。如果他们注册,他们可以评论并上传火车照片到网站。 如果相同的登录用户转到 planephotos.com ,则他们必须重新注册才能与该站点进行交互。否则,他们仍然可以作为未注册的用户浏览该网站。
这是否可能,或者我应该将它们分成两个完全不同的应用程序,只是共享数据库?
答案 0 :(得分:3)
我通常为Admin部分做的是使用子域创建一个单独的命名空间(即,在app / controllers下面创建一个单独的目录)。本质上,视图和控制器都是不同的,但模型都是相同的。
在我的路由中,文件我通过执行以下命令为子域创建一些约束:
constraints(:subdomain => /admin/) do
namespace :admin do
resources :mymodel # ......
end
end
您不需要子域,您需要完全独立的域。您可以尝试以下链接:Rails routing to handle multiple domains on single application
就设置全局变量而言,如果您创建单独的命名空间并相应地路由,则不需要。
答案 1 :(得分:1)
制作两个应用。当它发生时处理合并。
您可以随后将一个数据库播种到另一个数据库中。
制作一个包含所有模型和控制器逻辑的应用程序。当您开始设计工作时,使用git创建两个单独的分支。
他们将来合并这两个网站可能会遇到一些问题,因为用户可能不喜欢他们突然在他们没有注册的网页上拥有帐户。
在这种情况下,我真的会讨论两个网站的需求。只有一个有很多可靠的论据。他们可能有他们的理由,但从技术角度来看,两个不同的应用程序是最好的方法。
Rails是“约定优于配置”。这个场景将给你一个史诗般的战斗铁与许多配置问题。而且你不想打铁。
拥有一个应用程序的唯一优势是组合管理员。但是,这将需要有两个单独的用户列表(以及您拥有的所有其他模型)。因此,与拥有两个单独的管理员一样痛苦,
答案 2 :(得分:0)
构建两个单独的应用程序可能是将来的维护痛苦,但另一方面,为每个应用程序隔离数据可能会导致数据库级别的问题。如果您决定构建一个应用程序,则可以在视图文件夹中创建不同的文件夹,并将不同的视图分开。 request.url
会给你网址。最好与客户讨论可能影响您实施的未来任何变化。
PS。我会去两个单独的申请。对我来说,这是解决这种情况最安全的方法。任何未来的更改和升级都可以轻松地进行到其中一个应用程序并进行转移。