0

看看是否有一些关于我应该如何引入有效“联合”数据的登录“用户”的想法的想法......让我解释一下。

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

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

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

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

哦...我可能想让多个用户能够访问属于另一个用户的部分或全部数据。这适用于可能想要分享的小型销售人员团队。

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

4

2 回答 2

2

你有正确的想法。您必须在用户和数据模型之间建立关系。在某些情况下,它可能很简单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.allReport.find(params[:id])到处乱放,因为这可能会导致漏洞——用户将能够访问实际上不属于他们的数据。

于 2010-10-16T12:31:06.640 回答
0

您所说的称为 ACL(访问控制列表)。Rails 有许多插件可以为您完成大部分工作。谷歌一下,看看你能不能找到一个适合你需要的。

编辑:快速浏览后,Acl9似乎是最流行的兼容 Rails 3 的一个。

于 2010-10-16T06:36:16.627 回答