我是否需要在Ruby on Rails应用程序中使用多个数据库?

时间:2012-09-06 18:23:54

标签: ruby-on-rails database

我正在使用Ruby on Rails设计CRM。您如何看待我是否需要为每个客户公司提供单独的数据库?或者我应该为每个人使用相同的数据库吗?

2 个答案:

答案 0 :(得分:2)

如果他们是独立的公司或竞争公司(比如白标CRM),你肯定会想要运行单独的实例,因为那时你可以可靠地声称总沙盒。否则,如果你无意中编写的代码以某种方式允许一个数据显示另一个,则游戏结束。您的客户将跑到山上,告诉每个人他们对您产品的糟糕体验。

我甚至建议您为每个客户运行应用程序的单独实例。 Heroku提供了一种部署RoR应用程序的超级简单方法,因此无论何时添加新客户,都可以启动新的应用程序,这是一种合理的方法。当然,如果您想要一个允许人们只注册帐户的更具交钥匙的解决方案,您必须拥有一个实例来强制执行代码中的客户数据沙箱。显然可以这样做,但分离不是在基础设施层面完成的,这最终是最安全的方式。

最好的问候。

答案 1 :(得分:2)

我使用单个数据库执行此操作,如下所示:

class Company < ActiveRecord::Base
  has_many :records

  def recent_records
   records.desc(:created_at)
  end
end

class Record < ActiveRecord::Base
  belongs_to :company
end 

然后,在控制器中,我可以写:

@records = @company.recent_records

并将其传递给观点。

希望这有帮助。