支持使用Sorcery或Authlogic宝石的多个模型?

时间:2012-06-11 16:14:28

标签: ruby-on-rails ruby-on-rails-3 authlogic sorcery

  1. 我有用户和联系人。
  2. 用户登录自己的帐户,可以创建地址簿,从中添加联系人。
  3. 如果他们与联系人共享某些内容,联系人需要登录才能查看。
  4. 用户在数据库中是唯一的(存储在用户表中),联系人存储在联系人表中,并且每个给定的地址簿只能是唯一的。

    我目前正在为用户使用Sorcery gem,效果很好。但是,如何扩展此功能以支持登录联系人的身份验证?

    我已经通过STI或多态设置阅读了一些内容,但还不清楚这种情况的一般模式是什么。

    我可以简单地让两个模特都使用法术吗?或者这是一种反模式?

    提前致谢!

1 个答案:

答案 0 :(得分:1)

为什么要为联系人使用单独的模型?为什么不设置一个自连接,如:

has_many :contact_entries, :class_name => "ContactEntry"
has_many :contacts, :through => :contact_entries

您的用户表看起来一样,但您会有一个类似的连接模型:

class ContactEntry < ActiveRecord::Base
  belongs_to :user
  belongs_to :contact, :foreign_key => "contact_id", :class_name => "User"
end

哪个会有user_id和contact_id字段。

<强>更新

好的,我现在看到你的问题。我不认为这是可能的巫术,至少不是没有对巫术本身进行实质性的编辑。 Sorcery在文件initializer.rb中定义了一个可验证的模型。

然而,Authlogic可以通过“acts_as_authentic”进入任何模型,因此它是满足您需求的合理解决方案。缺点是authlogic似乎没有积极开发。它有10天前的fair amount of activity,所以它绝对值得一试。