我想为用户添加一个invite_code要求进行注册。 IE浏览器。除了要求他们指定电子邮件/密码组合,我还想要一个额外的字段:invite_code。这是一个临时修复,以便非通缉用户在给定的alpha期间无法登录。
我很困惑,因为Devise没有添加控制器。我对虚拟属性的概念很熟悉,我觉得我可以将:invite_code添加到模型中,然后只需硬编码一步就可以说邀请代码必须等于12345或者其他任何东西。< / p>
设计认证是否有意义?我如何从适当的轨道安静的方法接近这个?
非常感谢。
答案 0 :(得分:24)
1)除了getter之外,虚拟属性通常还需要一个setter。
最简单的方法是添加
attr_accessor :invite_code
attr_accessible :invite_code # allow invite_code to be set via mass-assignment
# See comment by James, below.
到用户模型
2)我认为Devise希望用户模型进行验证。因此,您可以通过添加
来停止验证validates_each :invite_code, :on => :create do |record, attr, value|
record.errors.add attr, "Please enter correct invite code" unless
value && value == "12345"
end
注意:已添加:on =&gt; :创建,因为只有创建新用户才需要invite_code,而不是更新。
答案 1 :(得分:10)
试试这个:http://github.com/scambra/devise_invitable
It adds support to devise用于通过电子邮件发送邀请(需要进行身份验证)并接受设置密码的邀请。
适用于Devise&gt; = 4.0如果要使用devise 3.0.x,则必须使用1.2.1或更低版本如果要使用设计3.1.x,则必须使用1.3.2或更低版本如果需要使用devise&gt; = 3.2,你必须使用1.6.1或更低......
答案 2 :(得分:0)
根据文档,invitable可让您控制谁邀请其他人。如果invitation_limit
设置为“0”,则人们无法分发邀请。
来自文档:
invitation_limit:用户可以发送的邀请数量。该 默认值为nil表示用户可以发送尽可能多的邀请 想要,对任何用户都没有限制,invitation_limit列不是 用过的。设置为0表示他们无法发送邀请。设置n> 0表示他们可以发送n个邀请。您可以更改invitation_limit 某些用户的列,以便他们甚至可以发送更多或更少的邀请 全球邀请_限制= 0。