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

时间:2010-10-16 06:26:48

标签: ruby-on-rails authlogic-oauth

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

到目前为止,我一直在构建我的应用程序,如果只有一个用户。我。所有数据和报告都是我特有的。我刚刚添加了authlogic。

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

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

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

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

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

2 个答案:

答案 0 :(得分: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]),因为这会导致漏洞 - 用户将能够访问实际上不属于他们的数据。

答案 1 :(得分:0)

您所谈论的内容称为ACL(访问控制列表)。 Rails有许多插件可以为您完成大部分工作。谷歌周围,看看你是否能找到一个符合你需求的。

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