Rails - 如何使您的应用程序使用多个子域

时间:2013-01-06 05:52:07

标签: ruby-on-rails

我正在写一个RoR应用程序。我想允许我的多个客户端将其用作基于云的应用程序。我不想为每个客户复制代码。

我认为这意味着为每个客户使用子域名,并为客户提供一个表格。 Customers表将包含域的字段。

换句话说 - 我希望每个客户只能看到他们的记录。

我的问题是:

  • 有人记录了如何在Rails中执行此操作吗?在哪里?

  • 每张桌子都必须有一个customer_id吗?或者,如果您有一个带有Customer_id的Project表,然后有Project的任务,那么在Task记录中就不需要customer_id了 - 对吗?

  • 您是否必须与客户一起开始每个视图。 ??

任何想法都会有所帮助! 谢谢!

3 个答案:

答案 0 :(得分:1)

这里有关于在Rails 3中处理子域的railscast:http://railscasts.com/episodes/221-subdomains-in-rails-3

关于第2点,您只需要customer_id上的Project,您也不需要Task上的{{1}}。

我不确定你和客户一起开始每个视图的意思,但我猜不是。也许通过railscast会在这里回答你的问题。

答案 1 :(得分:1)

您还需要考虑授权,即当前用户是否有权查看/更新这些记录?我个人推荐用于此目的的cancan gem https://github.com/ryanb/cancan,您在应用中定义了一个包含用户所有权限的模型/ abilities.rb文件。我发现它的效果非常好。

答案 2 :(得分:0)

  

有人记录了如何在Rails中执行此操作吗?它在哪里?

整件事?不是我知道的。

对于子域名?是的,它被称为 catch-all A记录 catch-all子域,......等。 只需将通配符(*)A record添加到域中,然后在RoR中使用request.subdomain来提取所请求的子域。

@cheeseweasal回答了其余的事情。