【问题标题】:Invite user without email + rails + devise invitable邀请没有电子邮件的用户 + rails + 设计邀请
【发布时间】:2025-12-24 21:05:12
【问题描述】:

我想要一个功能,我可以只使用他们的电话号码邀请任何用户。我没有电子邮件地址。当用户被邀请时,会向指定号码发送一条短信,并根据用户回复的短信内容(比如“Y”或“N”),确认/拒绝他们的帐户。我们计划在短信中提供一个链接,用户可以在其中单击并输入所需的详细信息(电子邮件、姓名等)。

Loading development environment (Rails 5.0.2)
2.3.0 :001 > u = User.invite!(phone_number: '1234567890')
=> #<User id: nil, email: nil, first_name: nil, last_name: nil, phone_number: "1234567890", created_at: nil, updated_at: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_type: nil, invited_by_id: nil, invitations_count: 0>
2.3.0 :002 > u.errors
=> #<ActiveModel::Errors:0x007fc91fcd4c00 @base=#<User id: nil, email: nil, first_name: nil, last_name: nil, phone_number: "1234567890", created_at: nil, updated_at: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_type: nil, invited_by_id: nil, invitations_count: 0>, @messages={:email=>["can't be blank"]}, @details={:email=>[{:error=>:blank}]}>

【问题讨论】:

    标签: ruby-on-rails-5 devise-invitable


    【解决方案1】:

    我有同样的问题,我为它设置了示例电子邮件并稍后将其删除...

    u = User.invite!(phone_number: '1234567890', email: 'example@abc.com', skip_invitation: true)
    u.update(email: '')
    

    将此添加到 user.rb:

    def email_required?
      false
    end
    def email_changed?
      false
    end
    

    【讨论】:

      最近更新 更多