Ruby on rails 我应该在哪里为我的用户创建一个简短的URL';MVC架构的概要页面?

Ruby on rails 我应该在哪里为我的用户创建一个简短的URL';MVC架构的概要页面?,ruby-on-rails,ruby,model-view-controller,bit.ly,Ruby On Rails,Ruby,Model View Controller,Bit.ly,我有一个Rails应用程序,其中有一个个人资料页- 要创建配置文件用户名,我在模型中使用before_create AR钩子: before_create :generate_username def generate_username self.username = a_user_name_i_generated end 我还想保存一个简短的URL到用户的个人资料,这样当他们共享内容时,我可以自动链接到他们的个人资料页面。我决定利用bit.ly的API来缩短URL,但我不太确定应该

我有一个Rails应用程序,其中有一个个人资料页-

要创建配置文件用户名,我在模型中使用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_用户名之后。但是,我需要向bit.ly的API发出HTTP请求以获得缩短的URL

有人知道最好的方法吗


谢谢

我认为您使用回调的想法是正确的,但是我会创建一个观察者,这样就不会因为调用外部API而污染用户类。这里是。

假设您在第一代之后不会更改任何用户的个人资料\用户名,那么我同意Ben的建议。编写剖面模型的观察者。观察profile对象的创建(读取:初始保存),并因此执行缩短功能


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

我应该使用Net::HTTP来发出请求,还是有一个广泛使用的插件来进行API调用并返回XML对象?有大量HTTP客户端和解析库,但您必须自己测试它们,以了解什么是最好的。HTTP就足够了。此网站将帮助您解决以下问题: