创建用户之前验证的测试代码存在
型号:用户创建用户之前验证的测试代码存在
型号:BetaInvite
has_many :users
什么我真的想要做的是检查是否存在在允许用户保存之前,在数据库中发布测试版邀请。
由于用户将BetaInvite名称传入字段,我想检查它是否与数据库中的任何现有代码相匹配。
希望我没有太多混淆。
希望对此问题有任何帮助。
文本字段添加到窗体为:beta_code
添加该领域中的attr_accessor:attr_accessor:beta_code
-
然后将下面的行添加到模型(假设你只想要做用户创建此检查):
validate :beta_code_must_exist, :on => :create
-
更改
beta_code_must_exist
向窗体添加错误。另外请确保正确投射:beta_code转换为正确的类型。警告未经测试的代码如下
def beta_code_must_exist @invite = BetaInvite.find_by_name(beta_code) if @invite.empty? errors.add(:beta_code, "is not a valid invite code") else beta_invite_id = @invite.id end end
感谢您的答案,但我不知道我是如何检查user.beta_invite_id(来自用户窗体)是否匹配beta_invite.name(BetaInvite) – 2012-04-05 01:27:35
BetaInvite是否同时拥有一个名称和一个ID? – 2012-04-05 01:29:56
等待您的用户记录是否存在于进行验证时?我在这个答案中的假设是,这是一个用户注册页面,用户记录甚至不存在,因此没有以前的beta_invite关联。 – 2012-04-05 01:36:58
使用:inclusion
与:in
选项。你可以用任何枚举提供:in
:
validates :beta_invite, :inclusion => { :in => BetaInvite.all,
:message => "%{value} is not a valid beta invite code" }
你在做用户创建或在任何时候用户记录这种检查被保存? – 2012-04-05 01:26:19