我正在构建一个多租户Rails应用程序,该应用程序使用共享数据库,其中的数据通过将所有内容限定到每个帐户(类似于Basecamp 3)来隔离,而不是使用单独的表和子域。 here说明了我采用的方法。
每个帐户都有自己的数据(例如产品,库存),并且许多用户具有不同的角色(例如帐户所有者,员工,客户等)。我正在使用Clearance进行用户注册和登录。
对于这样的应用程序建模,似乎可以采用两种方法:
似乎选项2是更简单的解决方案,但是当新用户通过Clearance进行注册时,我无法创建帐户。我已经进入more detail on this problem here,但是我担心使用Option 2为应用建模的方式并不理想。
以下哪种方法最容易设置和维护?或者,还有其他方法可以为我所缺少的模型建模吗?
因为我最终希望该网站吸引一些用户,所以我应该the approach使用子域(例如Shopify吗?)。
答案 0 :(得分:0)
因此,我不确定随着应用程序的发展,该解决方案的效果如何,但是如果可以帮助其他遇到类似问题的人,我现在就继续进行以下工作:
belong_to
用户和每个用户has_one
帐户belong_to
帐户belong_to
帐户代码如下:
accounts_controller.rb
# POST /accounts
def create
@user = current_user
@account = @user.build_account(account_params)
respond_to do |format|
if @account.save
format.html { redirect_to @account, notice: 'Account was successfully created.' }
else
format.html { render :new }
end
end
end
def account_params
params.require(:account).permit(:company_name, :user_id)
end
models / account.rb
class Account < ApplicationRecord
belongs_to :user
end
models / user.rb
class User < ApplicationRecord
include Clearance::User
has_one :account
end