Rails - 注册代码有效性检查

时间:2012-09-20 16:38:06

标签: ruby-on-rails ruby ruby-on-rails-3

所以,我是新手,并试着通过跳进去学习。

我在我的rails应用程序中有一个奇怪的登录,其工作原理如下:

  • 管理员生成代码并指定上限
  • 用户通过输入此代码和一些保存的详细信息登录

型号:

class Code < ActiveRecord::Base  
  has_many :users, dependent: :destroy
  attr_accessible :code, :maxusers
end

class User < ActiveRecord::Base
  belongs_to :code
  attr_accessible :name, :email, :code_id
end

用户控制器:

class UsersController < ApplicationController
  def create
    @user = User.new(params[:user])
    if @user.save
      redirect_to "/welcome"
    end
  end
end

因此,例如代码为123456,限制为5

前5位用户可以使用他们的姓名,电子邮件和123456

进行注册

所以问题是:在保存之前如何检查代码是否有效?它必须存在且已分配的用户少于5个。

看起来很简单,但是我无法弄清楚语法,我在控制器中使用了before_filter,或者在保存到模型之前,但是我被卡住了。

1 个答案:

答案 0 :(得分:3)

before_filter是一个坏主意:模特必须为他们的诚信而烦恼,而不是控制者。

您可以尝试类似

# in your respective model

validate :at_least_five_codes

def at_least_five_codes
  errors.add(:base, 'Try another code') unless User.where(code: code).count < 5
end

如果当前代码被使用5次,您将无法保存模型。