Member.rb:
has_secure_password
validates :password, length: { minimum: 6 }, allow_blank: true, allow_nil: true
控制器:
def add_member
@group = Group.find(session[:group_id])
@mem = @group.members.create(member_params)
@mem.status = "Pending"
if @mem.save
token = SecureRandom.hex(10)
@mem.token = token
if @mem.save
@message = @group.sentMessages.new
@message.save
@message.send_new_member_email(@mem)
end
redirect_to group_path
else
@members = @group.members
render 'show'
end
end
我有一个Member
对象,由群组所有者创建。这本质上是一个虚拟对象,它包含一些数据并邀请成员加入该组。
从那里接收通知的用户可以选择创建帐户。我希望他们只需输入一个密码(我们已经有他们的电子邮件)来创建这个帐户。
群组所有者能够创建对象并且通知已经消失,但是一旦我添加了密码字段,群组所有者就无法再执行此操作了。提交表单后,页面将再次呈现,但仍会填充字段,并显示创建的新对象。但是,如果刷新页面,对象将消失,字段将再次变为空白。似乎if @mem.save
失败但我不知道为什么这并不能解释看似正在创建的对象..我认为allow_blank: true
和allow_nil: true
会解决这个问题,但我仍然在体验问题。谢谢你的帮助。
答案 0 :(得分:1)
has_secure_password
这是你问题的根源。根据{{3}}它附带了密码存在的验证,以及通过password_confirmation
确认密码
但好消息是,根据文档,你可以否定这样的验证:
has_secure_password(validations: false)
这应该对你有用