所以,我不确定随着应用程序随着时间的推移,这个解决方案的效果如何,但如果它可以帮助其他有类似问题的人,我最终会采用这个流程:
- 用户通过 /signup 的许可注册表单进行注册
- 注册后,如果他们尚未创建帐户,他们将被重定向到帐户/新帐户
- 帐户
belong_to
用户和每个用户has_one
帐户
- 其他一切,例如产品、
belong_to
帐户
- 用户角色是根据您的注册方式设置的。因此,如果您从主页注册,则默认情况下您是帐户所有者。
- 访问控制由用户角色和 Pundit 确定。
- 数据是孤立的,因为其他所有东西,比如产品,
belong_to
账户
这是关系的草图:
这是代码:
account_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
模型/account.rb
class Account < ApplicationRecord
belongs_to :user
end
模型/用户.rb
class User < ApplicationRecord
include Clearance::User
has_one :account
end