繁体   English   中英

如何将用户模型添加到我的应用程序中,以便数据在我的Rails应用程序中是“用户”特定的

[英]How do I add a user model to my application so data is “user” specific in my Rails app

希望了解是否有一些想法可以介绍如何有效地“联合”数据的登录“用户”的想法。...让我解释一下。

我一直在构建我的应用程序,就好像只有一个用户一样。 我。 所有数据和报告都是我特有的。 我刚刚添加了authlogic。

现在,我希望能够为新用户介绍一种登录方式,而不查看我的任何数据并使用该应用程序。 并最终支付使用该系统。

到目前为止,我的假设是我必须进入模型并在几乎每个模型中添加一个user_id,然后转到所有控制器并按用户搜索它们。

但是我想知道是否有更好的方法为每个用户联合数据的方法,建议和想法。

哦...我可能希望使多个用户可以访问属于另一用户的部分或全部数据。 这适用于可能希望共享的小型销售人员团队。

所以...在我尝试摸索自己之前的想法...谢谢:)

您有正确的主意。 您必须在用户和数据模型之间建立关系。 在某些情况下,它可能是一个简单的belongs_to :user ,但是如果您希望多个用户访问某些数据,则必须是has_and_belongs_to_many :users的多对多关系。

然后,我们只需更改获取数据的方式:

# Some controller, no restrictions
def index
  @reports = Report.all
end

def view
  @report = Report.find(params[:id])
end

# Some controller, with restrictuons
def index
  @reports = current_user.reports.all
end

def view
  @report = current_user.reports.find(params[:id])
end

使用上述逻辑,用户将只看到他们有关系的任何数据。

毫无疑问,如果您已经创建了大多数应用程序,则可能要花点时间。 您必须要非常,非常, 非常谨慎地进行操作,不要Report.all任何Report.allReport.find(params[:id]) ,因为这可能会导致漏洞-用户将能够访问非其实不是他们的。

您所说的就是ACL(访问控制列表)。 有许多Rails插件可以为您完成大部分工作。 到处搜寻Google,看看是否能找到适合您需求的产品。

编辑:快速浏览后, Acl9似乎是最受欢迎的Rails 3兼容版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM