Ruby on rails 定制Desive gem(导轨)
我正在尝试在注册表单中添加一个新字段“注册码”以及电子邮件/密码。(我在一个单独的数据库中有注册码字段,只有有效的注册码/电子邮件对才能用于注册) 我找不到Desive gem执行操作的任何控制器 我该如何设计来实现这一点Ruby on rails 定制Desive gem(导轨),ruby-on-rails,devise,Ruby On Rails,Devise,我正在尝试在注册表单中添加一个新字段“注册码”以及电子邮件/密码。(我在一个单独的数据库中有注册码字段,只有有效的注册码/电子邮件对才能用于注册) 我找不到Desive gem执行操作的任何控制器 我该如何设计来实现这一点 提前感谢。看来你的问题基本上与设计本身无关(除了视图)。要验证您的注册码/电子邮件对,您肯定需要将其添加为验证 验证注册码的简单方法可以是: class User validate :validate_registration_code private def
提前感谢。看来你的问题基本上与设计本身无关(除了视图)。要验证您的注册码/电子邮件对,您肯定需要将其添加为验证 验证注册码的简单方法可以是:
class User
validate :validate_registration_code
private
def validate_registration_code
reg_code = RegistrationCode.find_by_code(registration_code)
unless reg_code.email == record.email
errors.add(:registration_code, "Invalid registration code for #{record.email}")
end
end
end
您可能还想编写简单的自定义验证器:
class RegistrationCodeValidator < ActiveModel::Validator
def validate(record)
# actual reg code validation
# might look like:
reg_code = RegistrationCode.find_by_code(record.registration_code)
unless reg_code.email == record.email
record.errors[:registration_code] << "Invalid registration code for #{record.email}"
end
end
end
# in your User model
class User
# include registration code validator
include RegistrationCodeValidator
validates_with MyValidator
end
类注册CodeValidator record.errors[:registration\u code]designe将其控制器隐藏在gem的幕后。如果你想添加一个动作或修改一个动作,你必须对它进行子类化,并在路由中做一些工作,以将动作发送到你的控制器
但是,添加字段时不需要这样做。见戈沙克的答案谢谢戈沙克。。就是这样。。我还学会了如何使用这样的模型。。再次感谢你。。!!!没问题:)很高兴我的回答有帮助。