, если вы хотите продолжать генерировать, пока не получите действительный код, попробуйте:
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
или что-то подобное:)