我正在开发一个多用户、多帐户应用程序,其中 1 个帐户可以有 n 个用户。每个用户只能从其帐户访问信息非常重要。我的方法是向数据库中的每个模型添加一个 account_id,然后在每个 Controller 中添加一个过滤器以仅选择具有当前 account_id 的对象。我将使用授权插件。
这种方法是个好主意吗?
始终为每个不写入而创建的对象设置 account_id 的最佳方法是什么
object.account = @current_account
在每个 CREATE Action 中?也许是过滤器?
此外,我不确定为选择选项实现过滤器的最佳方法。我需要类似一般条件的东西:无论 SQL 语句中出现什么其他内容,总是有一个“WHERE account_id = XY”。
谢谢你的帮助!
最佳答案
这类似于 User.has_many :emails 场景。您不希望用户通过更改 URL 中的 ID 来查看其他人的电子邮件,因此您可以这样做:
@emails = current_user.emails
在您的情况下,您可能可以执行以下操作:
class ApplicationController < ActionController::Base
def current_account
@current_account ||= current_user && current_user.account
end
end
# In an imagined ProjectsController
@projects = current_account.projects
@project = current_account.projects.find(params[:id])
关于ruby-on-rails - 如何始终为 Rails 中的帐户范围设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792475/