рельсы 3, как ограничить отношения до 1 - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть группы пользователей и коды.

Пользователь создает код, и у этого кода есть user_id и band_id.

У меня есть обратный вызов до сохранения, генерирующий код.

before_create :generate_code

  private
    def generate_code      
      self.code = SecureRandom.hex(3)
    end

Мне нужно добавить проверку, если код существует с user_id и band_id, вернуть false

Таким образом, у пользователя будет только один код на группу

мыслей?

1 Ответ

1 голос
/ 13 декабря 2011

, если вы хотите продолжать генерировать, пока не получите действительный код, попробуйте:

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 или что-то подобное:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...