Ruby on rails:设计,想添加邀请码?

我想为用户添加一个invite_code要求进行注册。 IE浏览器。 除了要求他们指定电子邮件/密码组合,我还想要一个额外的字段:invite_code。 这是一个临时修复,以便非通缉的用户在给定的alpha期间无法登录。

我很困惑,因为Devise没有添加控制器。 我对虚拟属性的概念很熟悉,我觉得我可以将:invite_code添加到模型中,然后只需硬编码一步就可以说邀请代码必须等于12345或者其他任何东西。

设计认证是否有意义? 我如何从适当的轨道安静的方法接近这个?

非常感谢你。

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想要用户模型进行validation。 所以你可以通过添加来停止validation

 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 =>:create,因为仅在创建新用户时需要invite_code,而不是用于更新。

试试这个: http : //github.com/scambra/devise_invitable

它增加了对通过电子邮件发送邀请(它需要进行身份validation)以及接受设置密码的邀请的支持。

它适用于Devise> = 4.0如果你想使用devise 3.0.x,你必须使用1.2.1或更低版本如果你想使用设计3.1.x,你必须使用1.3.2或更低如果你想使用设计> = 3.2,你必须使用1.6.1或更低……

根据文档,invitable让您可以控制谁邀请其他人。 如果invitation_limit设置为“0”,则人们无法分发invitation_limit

来自文档:

invitation_limit:用户可以发送的邀请数。 默认值nil表示用户可以根据需要发送任意数量的邀请,对任何用户都没有限制,不使用invitation_limit列。 设置为0表示他们无法发送邀请。 设置n> 0表示他们可以发送n个邀请。 您可以为某些用户更改invitation_limit列,以便他们可以发送更多或更少的邀请,即使使用全局invitation_limit = 0也是如此。