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

Dav*_*ave 17 ruby ruby-on-rails invite devise

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

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

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

非常感谢你.

Lar*_*y K 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.
Run Code Online (Sandbox Code Playgroud)

到用户模型

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
Run Code Online (Sandbox Code Playgroud)

注意:添加:on =>:create,因为invite_code仅用于创建新用户,而不用于更新.

  • @ justin-meltzer我遇到了同样的问题,将:invite_code添加到attr_accessible(例如attr_accessible:email,:password,:password_confirmation,:remember_me,:invite_code) (2认同)

小智 10

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

它增加了支持 设计用于通过邮件发送邀请函(它需要进行身份验证),并接受邀请设置密码.

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