gpt4 book ai didi

ruby-on-rails - 添加邀请码到设计

转载 作者:行者123 更新时间:2023-12-04 03:44:35 25 4
gpt4 key购买 nike

我正在为婚礼创建一个 RSVP 应用程序。为了消除从回复到事件的随机人员,我想在邀请中包含一个代码(即“groombride2015”)。我想将此字段添加到注册中,除非此代码有效,否则不允许处理注册。我花了一整天的时间试图弄清楚这一点。

我最接近让它工作的方法是使用这种方法... http://wp.headynation.com/simple-invitation-access-code-using-rails-4-devise/

谁能帮我吗?

最佳答案

我前几天刚刚实现了这个,它实际上非常简单。首先,您需要在 Devise 注册表单中添加另一个允许的参数
app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
protect_from_forgery with: :exception

before_action :configure_permitted_parameters, if: :devise_controller?
after_action :verify_authorized, unless: :devise_controller?

protected

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(
:username,
:email,
:password,
:password_confirmation,
:remember_me,
:sign_up_code
) }
end
end

这些参数不必完全匹配,但您需要确保用于输入注册代码的任何表单字段与您在此处传递的名称相匹配。

现在使用代码属性的字段更新设计 View :
app/views/devise/registrations/new.html.erb
<%= form_for( resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<!-- Your Other Form Stuff -->
<%= f.text_field :sign_up_code %>
<% end %>

接下来,我们需要添加一个虚拟属性和一些验证:
app/models/user.rb
class User < ActiveRecord::Base
attr_accessor :sign_up_code
validates :sign_up_code,
on: :create,
presence: true,
inclusion: { in: ["your_code"] }
# The rest of your model
end

现在你已经准备好了!

请注意,如果您想要来自表invite_codes 的动态邀请码,您也可以执行以下操作:
inclusion: { in: proc { InviteCode.where( used: false ).map( &:code ) } }
在上面的模型中,我有一个字符串 code和一个 bool 值 used确保邀请码只能使用一次。

例如,我使用以下 seed.rb 代码来填充数据库创建时的邀请代码:
  invite_codes = (0...50).map { { code: SecureRandom.hex(7), used: false } }
invite_codes = invite_codes.uniq

invite_codes.each do |invite_code|
InviteCode.find_or_create_by!( invite_code )
end

关于ruby-on-rails - 添加邀请码到设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com