ruby-on-rails - 具有用户自定义字段的 Rails Multi-Tenancy SAAS 应用程序

标签 ruby-on-rails postgresql multi-tenant saas

我们正在构建一个 SAAS 应用程序。我们需要让客户自定义某个模型的字段。他们应该能够添加或删除字段。此应用程序基本上是一种 Assets 管理,客户应该能够在其中自定义 Assets 的属性。

我们有 Assets 表。这些表有多个属性表,如warrantyvendormaintenance等。 即

class Computer < ..
 has_one :warranty
 has_one :vendor
end

我们在那里有一组默认属性,但客户应该能够更改这些字段。

我们如何实现这一目标?

好的,这就是我所知道的。对于 Multi-Tenancy ,我们可以使用作用域、多个数据库或很棒的 PostgreSQL 模式。但是我们如何为每个客户实现自定义字段。

我们应该选择 NoSQL 吗?还是我们应该为基表使用 RDBMS,为属性表使用 NoSQL?

具有此要求的可扩展 SAAS 应用的正确组合、解决方案或架构是什么?

最佳答案

这取决于用例,您有多种选择。但是,在我看来,最好避免同时使用两种数据库。

如果您不使用 PostgreSQL 并且不需要对这些属性进行繁重的查询,ActiveRecord serialize 可以提供帮助。它利用一个文本字段来存储序列化的散列和数组。可以嵌套,速度较慢。

如果所有属性都是一级键/值对,比如保修期:18 个月,供应商:123,那么“hstore”是一个不错的选择,它内置于 PostgreSQL 中。

“hstore”灵活快速,但不适合嵌套哈希。有一个很棒的 gem 处理它:https://github.com/diogob/activerecord-postgres-hstore

如果嵌套哈希,PostgreSQL“JSON”字段类型可能会有所帮助。 http://www.postgresql.org/docs/devel/static/functions-json.html这是新的,我以前没用过,只是听说它更稳定和实用。

我认为这些选择应该足以解决您的问题。如果还是不行,或许可以考虑MongoDB。

关于ruby-on-rails - 具有用户自定义字段的 Rails Multi-Tenancy SAAS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783928/

相关文章:

由于 Asset Pipeline,Javascript 和 CSS 加载两次

ruby-on-rails - 如何在 Active Job (Rails 4.2) 中安排重复作业?

postgresql - 如何在 postgresql 函数中使用变量进行循环查询

postgresql - 我可以创建大于 RAM 的 Postgres 索引吗?

php - 如何在每个租户都有多个用户的 laravel 中拥有 Multi-Tenancy 数据库?

string - 在运行时更改 Multi-Tenancy 应用程序的 XSD ConnectionString

javascript - 在Jquery代码Rails中使用Link_to

ruby-on-rails - 未找到将 rails 应用程序部署到 digital ocean dokku ssh key

sql - Postgresql:在更新时替换部分字符串

.net - 如何触发 native Multi-Tenancy 应用程序的管理员同意流程?