1

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

4

2 回答 2

2

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

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

最好的祝福。

于 2012-09-06T19:47:31.073 回答
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

并将其传递给视图。

希望这可以帮助。

于 2012-09-06T19:56:35.797 回答