p0k*_*0k3 5 ruby-on-rails devise devise-invitable
首先,原谅我可怜的英语,我是法国人......解释我的问题很棘手!
我在Rails应用程序中有一个模型用户模型:
class User < ActiveRecord::Base
attr_accessible :email, :gender, :lastname, :firstname
end
Run Code Online (Sandbox Code Playgroud)
以及从User继承的BackUser模型:
class BackUser < User
# Class for Backoffice User
devise :database_authenticatable,
:rememberable,
:trackable,
:lockable,
:invitable,
:confirmable,
:validatable,
:validate_on_invite => true
attr_accessible :password, :password_confirmation, :remember_me, :active, :role
validates :role, presence: true,
inclusion: ["admin", "normal"]
validates :gender, presence: true
validates :firstname, presence: true
validates :lastname, presence: true
def admin?
self.role == 'admin'
end
end
Run Code Online (Sandbox Code Playgroud)
第二节课应该在邀请之前验证记录!但是,当我使用控制台执行以下操作时:
u = BackUser.new
u.invite!
Run Code Online (Sandbox Code Playgroud)
"u"保存在数据库中,邀请被发送到空白电子邮件...
你知道我要做什么吗?
吃了很多!
mik*_*ael 18
我相信你现在已经为你的问题找到了解决方案或解决方法,但对于遇到相同问题的未来SO用户,我发现了一个非常简单的修复方法.
Devise Invitable的模型配置文档没有完全解释如何实现:validate_on_invite,但您必须将配置选项设置为true- :validate_on_invite => true.
这是我的用户模型中的设计方法,以使其正常工作.
车型/ user.rb
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :validate_on_invite => true
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试提交邀请时,它会在允许发送邀请和创建用户记录之前完全验证记录,其中包含我在用户模型中设置的验证.看看文档,我猜你也可以在设计初始化程序中启用此设置,但我还没有尝试过那条路线.
*如果需要,可启用验证的第二个可能选项
配置/初始化/ devise.rb
config.validate_on_invite = true
Run Code Online (Sandbox Code Playgroud)
我从来没有能够使验证工作能够正确地进行可邀请的设计。您也不能使用RobHeaton的建议,因为您将收到密码验证错误。我使用这个小技巧来使验证生效:
def create
@user = User.new(user_params)
@user.valid?
@user.errors.messages.except!(:password) #remove password from errors
if (@user.errors.any?)
render 'new'
else
@user.invite!(current_user)
redirect_to user_path(@user)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2786 次 |
| 最近记录: |