我正在使用Ruby on Rails设计CRM。您如何看待我是否需要为每个客户公司提供单独的数据库?或者我应该为每个人使用相同的数据库吗?
答案 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
并将其传递给观点。
希望这有帮助。