Tag: 多租户

多模型嵌套表单,无法将用户添加到当前帐户

我到处寻找解决方案,但没有提出任何解决方案。 有效的部分 :我的应用程序允许客户使用嵌套表单创建帐户。 收集的数据在四个模型中创建记录 – 帐户,用户,accounts_users(因为用户可以与许多帐户关联)和配置文件(用于存储用户的fname,lname,phone等)。 该部分不起作用 :登录后,我希望用户能够使用下面的表单向其帐户添加更多用户。 我在提交时没有收到任何错误,但我被带回到同一表格,没有创建额外的记录。 任何帮助都是极好的! 这是嵌套表格…… true do |f| %> “btn btn-large btn-success” %> ApplicationController将所有内容范围限定为current_account,如下所示: def current_account @current_account ||= Account.find_by_subdomain(request.subdomain) if request.subdomain end UsersController def new @user = User.new @user.build_profile() #current_account.accounts_users.build() #Edit2: This line was removed respond_to do |format| format.html # new.html.erb format.json { render json: @user } end def […]

Ruby on Rails中的多租户架构

请让我知道在Ruby on Rails中实现多租户架构的最佳书籍。 有没有可用的gem或框架?

Rails Basecamp样式子域最佳实践

我的目标是为每个子域分别设置用户帐户。 在任何情况下我都不想在子域之间进行异花授粉。 我已经看过Robby Russle和DHH的想法(两者都是前Rails3)。 控制器处理非常简单,我的问题是关于保持模型数据的分离。 阻止user1查看user2数据的最佳方法是什么? 一些想法可能包括: 为每个模型添加subdomain_id外键 – Advantage ,简单的一对多关系可用于将每个模型范围限定为子域。 – 缺点 ,这是数据和较大的应用程序逻辑之间非常紧密的耦合,这似乎是不合适的。 One-to-many :through将每个模型与子域相关联 – Advantage ,无需将subdomain_id外键列添加到将它们与子域相关联的现有表中。 – 缺点 ,我的直觉是,这是有点矫枉过正。 多个连接查询可能变得复杂并且可能发生交叉传播错误。 每个子域的单独应用程序或数据库 – 优势 ,数据完全隔离。 – 缺点是 ,需要管理/更新/保护/托管等大量单个应用程序/数据库。 你的想法?

多租户轨道应用:不同技术的优缺点是什么?

我最初为一个客户端编写了Ruby on Rails应用程序。 现在,我正在更改它,以便它可以用于不同的客户端。 我的最终目标是某些用户(不是我)可以单击按钮并创建新项目。 然后生成所有必要的更改(新模式,新表,代码处理),而无需任何人需要我编辑database.yml文件或添加新的模式定义。 我目前正在使用SCOPED访问。 所以我有一个项目模型,其他相关模型有一个project_id列。 我已经查看了有关Rails中多租户应用程序的其他post。 很多人似乎建议为Postgres中的每个新客户创建不同的架构。 但是,对于我来说,对于新客户端而言,在数据模型方面具有不同的模式并没有多大帮助。 每个客户端将具有相同的表,行,列等。 我对每个客户的愿景是我的生产数据库首先有一个不同项目/客户的表。 并且这些表中的每一个都链接到一组表,这些表对于不同的数据几乎相同。 换句话说,表格。 或者换句话说,第一个表将映射到具有相同结构的每个客户端的不同数据集。 我解释我的愿景的方式与Postgres实现不同“模式”的方式类似吗? 它看起来像嵌套表吗? 或者Postgres是否必须查询数据库中的所有信息? 我目前不使用Postgres,但我愿意学习它是否适合设计。 如果您知道使用适合我需求的Rails的数据库软件,请告诉我。 现在,我正在使用范围来完成多租户应用程序,但它不会感觉可扩展或干净。 但是,如果我给他们提供可填写的信息,它确实使非技术用户很容易创建新项目。 你是否知道在多用户模式Postgres定义是否可以让用户点击按钮后自动工作? 我希望这可以由Rails处理,如果可能的话不是由外部脚本处理? (请以任何方式提出建议) 最重要的是,您是否建议使用任何插件,或者我应该为此任务采用不同的框架? 我发现Rails在某些抽象情况下受到限制,这是我第一次遇到Rails扩展问题。 任何与多租户申请或我的情况有关的建议都是受欢迎的。 如有任何问题需要澄清或提供其他建议,也欢迎。 谢谢, – 戴夫

PostgreSQL模式的Rails迁移

我正在为不同的客户端使用PostgreSQL模式开发多租户rails应用程序。 Rails迁移不适用于开箱即用的多个模式,所以我做了以下rake任务来迁移所有模式,它似乎工作。 我的问题是,如果其他人实施了更好,更优雅的解决方案。 我也非常满意一个很好的教程,包括使用多个模式的PostgreSQL的rails代码示例。 到目前为止,我只找到了关于这个主题的一个很好的演讲http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html和我的目标是tomayko.com/writings/rails-multiple-connections desc ‘Migrates all postgres schemas’ task :schemas do # get all schemas env = “#{RAILS_ENV}” config = YAML::load(File.open(‘config/database.yml’)) ActiveRecord::Base.establish_connection(config[env]) schemas = ActiveRecord::Base.connection.select_values(“select * from pg_namespace where nspname != ‘information_schema’ AND nspname NOT LIKE ‘pg%'”) puts “Migrate schemas: #{schemas.inspect}” # migrate each schema schemas.each do |schema| puts “Migrate schema: #{schema}” config […]

Rails – 具有自定义框架的多租户应用程序

我正在组织一个多租户应用程序,使用单个代码库/应用程序使用子域来检测租户,然后在postgres上运行SET SCHEMA来做有趣的事情。 我的问题是某些客户端需要对主代码库进行各种级别的自定义。 不是很多,但肯定足以说明我不想通过添加一堆if语句来开始攻击主要模型和控制器。 覆盖视图很容易,视图加载路径…但我的问题是:我如何提供一个良好的框架来覆盖或添加function到基本控制器,模型和帮助器,以根据需要调整每个租户的东西? 理想情况下,它应该是非常无缝的并且不会侵入主代码,并且应该提供用于组织定制代码的适当机制。 我调查了一些选项,包括使用includes / extends(mixins)。 问题是在生产中,方法留在对象中(可理解)。 我已经尝试过使用mixology gem来解决这个问题,但它并没有像我想象的那样完全有效,并且它比我想要的更具侵入性,我也不清楚如何将它与模型联系起来(在控制器中,我刚尝试使用mixin / unmix viafilter之前/之后)。 如果有人对如何最好地解决/解决这个问题有任何想法,我将非常感谢您的反馈。 FWIW这是Rails3

我应该使用多个数据库吗?

我即将使用Ruby on Rails创建一个应用程序,我想使用多个数据库,基本上是一个会计应用程序,每个用户将拥有多个公司。 我想为每家公司创建一个数据库 我发现这篇文章http://programmerassist.com/article/302但我想阅读更多关于这个问题的想法。 我必须在MySQL和PosgreSQL之间做出决定,哪个数据库可能更适合我的问题。

在Rails 3中处理多租户的最佳方法

我正在构建多租户应用程序。 所有数据隔离都由每个表中的TenantID列完成。 所有租户模型自动处理多租户的最佳方法是什么。 例: Contacts.new({…..}) should automatically add :tenant => curret_user.tenant Contacts.where({….}) should also add :tenant => curret_user.tenant 目前我在CanCan gem中看到类似这样的内容,它可以获取特定用户参数的记录。 但它没有为插入和更新操作提供任何东西。 或者可能是我不明白该怎么做。 此致,Alexey Zakharov。

编写一个多租户Rails 3应用程序,以便在Heroku上进行部署

我正在构建一个用于在Heroku上部署的Rails 3应用程序,我想知道是否有关于如何在我的模型中处理多租户的任何建议。 半年前,有一个相关问题( #3776593 )发布在这里,但没有得到很多答案。 我还看过Guy Naor关于使用Rails编写多租户应用程序的演讲 ,但似乎3个提议的解决方案中有2个不适用于Heroku。 我将链接到这些,但新的Stackoverflow用户限于2个超链接。 我还遇到了以下工具: http://samuel.kadolph.com/2010/12/simple-rails-multi-tenancy/ http://blog.codecrate.com/2011/03/multitenant-locking-down-your-app-and.html 只是想知道你是否有使用多租户gem或简单轨道多租户gem的经验。 似乎最简单的解决方案是简单地将belongs_to放在我需要在账户下的所有模型上,但我真的很想知道你在现实世界中使用了什么!

在使用Rails和Devise注册后,将用户登录到其子域

我在我的Rails 3应用程序中使用Devise进行身份validation。 该应用程序使用PostgreSQL模式和Apartment gem来促进多租户。 创建帐户后 ,登录和退出特定子域的工作正常。 用户只能在子域上登录其特定帐户,这很棒。 这是我遇到问题的地方…… 全新用户点击注册url: http://foo.com/signup 默认情况下,当他们单击“提交”时,将创建新帐户,但会将用户发送到: http://foo.com/dashboard 相反,我希望他们去: http://myaccount.foo.com/dashboard 为了实现这一点,我覆盖了registrations_controller.rb文件中的after_sign_up_path_for方法: def after_sign_up_path_for(resource) root_url(:subdomain => resource.account.subdomain) end 这按预期工作 – 它加载正确的URL – 但用户的会话是为根域(foo.com)而不是子域创建的,因此要求用户登录。 我发现的一个建议是将config/initializers/session_store.rb更改为: config.session_store :cookie_store, :key => ‘_domain_session’, :domain => :all 但这允许任何人登录任何子域的帐户,这显然不是很酷。 问题:如何确保注册时创建的会话对注册过程中创建的子域有效