3

我有一个 Rails 应用程序,其中人们有一个个人资料页面 - http://prettylongdomainname.com/profile_username

要创建配置文件用户名,我在模型中使用了 before_create AR 挂钩:

before_create :generate_username

def generate_username
    self.username = a_user_name_i_generated
end

我还想将缩短的 URL 保存到用户的个人资料中,以便在他们分享内容时,我可以自动链接到他们的个人资料页面。我决定利用 bit.ly 的 API 来缩短 URL,但我不太确定应该将代码放在哪里。

我应该在创建用户时保存缩短的 URL,特别是在我生成用户的 profile_username 之后。但是,我需要向 bit.ly 的 API 发出 HTTP 请求以获取缩短的 URL。

有谁知道做到这一点的最佳方法?

谢谢!

4

2 回答 2

3

我认为您对使用回调有正确的想法,但我会创建一个观察者,以免通过调用外部 API 来污染 User 类。这是有关 rails 中观察者的更多信息

于 2010-02-18T19:10:53.183 回答
1

假设您不会在初始生成后更改任何用户的 profile_username,那么我同意 Ben 的建议。编写轮廓模型的观察者。注意配置文件对象的创建(阅读:初始保存),并因此执行您的缩短功能。

然后,您的缩短方法可以覆盖对外部 API 的调用,并将新 URL 添加到模型实例。在模型代码本身中保留对缩短 URL 的验证。

于 2010-02-19T23:00:49.553 回答