【问题标题】:Where should I create a shortened URL to my users' profile page for MVC architecture?我应该在哪里为 MVC 架构创建用户个人资料页面的缩短 URL?
【发布时间】:2010-02-18 16:32:35
【问题描述】:

我有一个 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。

有人知道最好的方法吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby model-view-controller bit.ly


    【解决方案1】:

    我认为您使用回调的想法是正确的,但我会创建一个观察者,以免通过调用外部 API 来污染 User 类。这里是more information about observers in rails

    【讨论】:

    • 我应该只使用 Net::HTTP 来发出请求,还是有一个广泛使用的插件可以进行 API 调用并返回 XML 对象?
    • 有大量的 HTTP 客户端和解析库,但您必须自己测试它们才能知道什么是最好的。 Net::HTTP 就足够了。本站将为您提供帮助:ruby-toolbox.com
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 2015-03-06
      • 2012-02-21
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多