Где я должен создать сокращенный URL на странице профиля моих пользователей для архитектуры MVC? - PullRequest
3 голосов
/ 18 февраля 2010

У меня есть приложение Rails, где у людей есть страница профиля - http://prettylongdomainname.com/profile_username

Чтобы создать имя пользователя профиля, я использую хук AR before_create в моей модели:

before_create :generate_username

def generate_username
    self.username = a_user_name_i_generated
end

Я также хотел бы сохранить сокращенный URL-адрес в профиле пользователя, чтобы, когда они делятся информацией, я мог автоматически ссылаться на страницу своего профиля. Я решил воспользоваться API-интерфейсом bit.ly, чтобы сократить URL-адрес, но я не совсем уверен, куда мне поместить код.

Имеет смысл сохранять сокращенный URL-адрес при создании пользователя, особенно сразу после создания имени пользователя профиля. Однако мне нужно сделать HTTP-запрос к API bit.ly, чтобы получить сокращенный URL.

Кто-нибудь знает лучший способ сделать это?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 февраля 2010

Я думаю, у вас есть правильная идея с использованием обратного вызова, но я бы вместо этого создал наблюдателя, чтобы не загрязнять класс User вызовами внешнего API. Вот больше информации о наблюдателях на рельсах .

1 голос
/ 20 февраля 2010

Если вы не будете изменять имя пользователя profile_user после первоначальной генерации, тогда я согласен с предложением Бена. Написать обозреватель модели профиля. Следите за созданием (читай: первоначальное сохранение) объекта профиля и выполняйте в результате этого функцию сокращения.

Ваш сокращенный метод может затем покрыть вызов внешнего API и добавить новый URL-адрес к экземпляру модели. Сохраните проверку сокращенного URL-адреса в самом коде модели.

...