Rails: Назначать пользователям случайный аватар по умолчанию (например, Twitter)?

Я использую Paperclip для обработки аватаров для пользователей и в настоящее время устанавливаю изображение по умолчанию, используя:

:default_url => '/images/img-missing_:style.png'

Но что я хотел бы сделать, так это когда пользователь регистрируется, давать ему случайный аватар, который он получает, пока не загрузит свой собственный.

Твиттер делает это со своим аватаром «яйцо», которому присваивается, вероятно, полдюжины различных цветов.

Как я могу это сделать?

Обратите внимание: я не хочу показывать случайный аватар каждый раз, когда делается вызов пользователю, скорее я хочу, чтобы ему назначался случайный аватар при регистрации, и он оставался с ним до тех пор, пока он не загрузит свой собственный.


person Shpigford    schedule 23.11.2010    source источник
comment
может поддерживать счетчик на сеансе сервера и циклически проходить его, скажем, у вас есть 10 аватаров на выбор случайным образом.. поддерживать переменную сеанса сервера, которая сбрасывается каждый раз, когда достигается предел.. PHP поддерживает эти переменные сеанса на стороне сервера, а не уверен, как Ruby on Rails справится с этим..   -  person Jasdeep Singh    schedule 23.11.2010


Ответы (2)


Допустим, у вас есть 10 аватаров по умолчанию, вы можете использовать модуль их идентификатора пользователя, чтобы определить, какой из них отображается. Это было бы последовательно и тривиально для реализации.

person Spencer Hakim    schedule 23.11.2010

Вы также можете использовать длину имени пользователя, чтобы определить, какое изображение используется в качестве аватара по умолчанию, скажем, я регистрируюсь с именем пользователя: злодей (которое составляет 7 символов).

вы можете использовать 7 в качестве ссылки на изображение номер 7 (скажем, 7.png), чтобы установить его в качестве аватара по умолчанию.

Чтобы сделать его более последовательным, добавьте такие пункты, как:

 0) First, check that the username falls within a plausible character length.. (say 6-14)
 1) if number is even, divide by 2 and use the result to pick up the image.
 2) if result is odd, use the number as it is to pick up the default avatar.

Итак, в моем случае выше вы можете использовать 7 в качестве магического числа и может быть аватар 7.png по умолчанию для этого пользователя.

person Jasdeep Singh    schedule 23.11.2010
comment
Я не могу себе представить, чтобы вы сделали это с равномерным распределением. - person Spencer Hakim; 23.11.2010
comment
О, конечно, это не будет равномерным распределением ... средние числа будут использоваться больше, чем те, которые находятся на дальней нижней и верхней стороне. - person Jasdeep Singh; 24.11.2010