我正在构建一个多租户rails应用程序,该应用程序使用共享数据库,通过将每个帐户(类似于Basecamp 3)的所有内容(而不是here)划分为数据,而不是使用单独的表和子域。我正在采取的方法是Clearance。
每个帐户都有自己的数据(例如产品,库存),以及许多具有不同角色的用户(例如帐户所有者,员工,客户等)。我正在使用进行用户注册和登录。
似乎有两种方法可以用来建模这样的app:
似乎选项2是更简单的解决方案,但是当新用户通过Clearance注册时,我阻止了如何创建帐户。我已经进入了the approach,但我担心我使用选项2为我的应用程序建模的方式并不理想。
哪种方法最简单的设置和维护?或者,是否有另一种模拟这种方式的方法,我错过了?
因为我最终希望该网站有一些用户是客户,我应该使用belong_to
使用Subdomains(如Shopify?)。
所以,我不确定这个解决方案随着时间的推移会如何发挥作用,但是如果它可以帮助其他有类似问题的人,我最终会继续使用这个流程:
has_one
用户和每个用户belong_to
帐户belong_to
帐户这是关系的草图:# 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
这是代码:
accounts_controller.rb
class Account < ApplicationRecord
belongs_to :user
end
车型/ account.rb
class User < ApplicationRecord
include Clearance::User
has_one :account
end
车型/ user.rb
qazxswpoi