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

时间:2010-09-13 22:17:40

标签: ruby-on-rails ruby devise invite

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

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

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

非常感谢。

3 个答案:

答案 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。