所以,我是新手,并试着通过跳进去学习。
我在我的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,或者在保存到模型之前,但是我被卡住了。
答案 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次,您将无法保存模型。