我正在写一个RoR应用程序。我想允许我的多个客户端将其用作基于云的应用程序。我不想为每个客户复制代码。
我认为这意味着为每个客户使用子域名,并为客户提供一个表格。 Customers表将包含域的字段。
换句话说 - 我希望每个客户只能看到他们的记录。
我的问题是:
有人记录了如何在Rails中执行此操作吗?在哪里?
每张桌子都必须有一个customer_id吗?或者,如果您有一个带有Customer_id的Project表,然后有Project的任务,那么在Task记录中就不需要customer_id了 - 对吗?
任何想法都会有所帮助! 谢谢!
答案 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
来提取所请求的子域。