我有用户频段和代码。
用户创建代码,该代码具有user_id和band_id。
我有一个前保存回调生成代码。
before_create :generate_code
private
def generate_code
self.code = SecureRandom.hex(3)
end
我需要添加一个检查,如果代码存在user_id和band_id,则返回false
这样一个用户每个频段只有一个代码
想法?
答案 0 :(得分:1)
如果您想在获得有效代码之前继续生成,请尝试:
def generate_code
begin
self.code = SecureRandom.hex(3)
end while User.exists?(:code => self[:code])
end
如果您只想尝试一个代码,并返回false,请尝试:
def generate_code
self.code = SecureRandom.hex(3)
return false if User.exists?(:code => self[:code])
end
注意:将“用户”更改为您正在检查碰撞的关系:)
或者,您可以尝试validates :code, :uniqueness => true
或类似的东西:)