- 我有用户和联系人。
- 用户登录到他们的帐户,并可以创建他们从中添加联系人的地址簿。
- 如果他们与联系人共享某些内容,该联系人需要登录才能查看。
用户在数据库中是唯一的(存储在用户表中),联系人存储在联系人表中,并且仅在给定的地址簿中是唯一的。
我目前正在为用户使用 Sorcery gem,效果很好。但是,如何扩展它以支持联系人登录身份验证?
我已经通过 STI 或多态设置阅读了一些内容,但不清楚此类事情的一般模式是什么。
我可以简单地让两个模型都使用巫术吗?或者这是一种反模式?
提前致谢!
用户在数据库中是唯一的(存储在用户表中),联系人存储在联系人表中,并且仅在给定的地址簿中是唯一的。
我目前正在为用户使用 Sorcery gem,效果很好。但是,如何扩展它以支持联系人登录身份验证?
我已经通过 STI 或多态设置阅读了一些内容,但不清楚此类事情的一般模式是什么。
我可以简单地让两个模型都使用巫术吗?或者这是一种反模式?
提前致谢!
为什么要为联系人使用单独的模型?为什么不设置一个自加入,例如:
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 天前有相当多的活动,所以它绝对值得一看。