【问题标题】:Ruby on Rails MVC QuestionRuby on Rails MVC 问题
【发布时间】:2009-09-20 21:05:29
【问题描述】:

我打算在数据库中存储与一本书(书名,isbn)相关的最少量信息。但是,在显示时,我想显示未存储在数据库中的其他属性(页面、作者、封面图片)。我计划使用 Ruby/AWS 从 Amazon Web Services (AWS) 获取此信息。我对 Ruby on Rails 非常陌生,我不确定这将/应该如何执行。

我想到的一些选项包括修改书籍控制器或基于亚马逊实体创建一个完全独立的模型,该模型依赖于搜索仅在我的数据库中列出的书籍。

【问题讨论】:

    标签: ruby-on-rails model-view-controller amazon-web-services


    【解决方案1】:

    可以自定义您的 ActiveRecord 账簿模型以从 AWS 检索其他属性。您的视图和控制器将毫无头绪和干燥。

    【讨论】:

    • 这很有道理。我应该创建定义或属性来从模型中进行查找吗?
    • 创建名为(页面、作者、封面图像等)的方法。在这些方法中,获取亚马逊信息并返回所要求的值。您可能不想为每个属性进行 AWS 调用,因此通过将 AWS 结果塞入活动记录的实例变量(例如 (@my_aws_result))来缓存 AWS 结果。这不会持续,但至少您会将 AWS 请求限制为每个最终用户请求 1 个。显然,您可以使用更高级的缓存,而不必担心会破坏您的控制器和视图。该模型将封装这些细节。
    【解决方案2】:

    当您需要在任何 MVC 环境中处理任何数据时,它需要进入模型。您可以创建一个额外的 other_information 方法,该方法使用 ||= 从 AWS 获取其他信息或从实例变量返回信息。或者你可以创建一个 find_with_info 方法来同时获取所有信息:)

    但绝对要在模型中保留任何与数据相关的任务。

    【讨论】:

      【解决方案3】:

      我建议在模型中创建方法。每次显示这些条目时,您是否总是要提取额外的信息?如果不是,您可能希望对“扩展”(即有亚马逊信息)或“有限”(即没有亚马逊信息)有不同的控制器操作,并让另一个作为标准。通过这种方式,您可以在需要时准确提取所需内容,并确保仅在需要时才访问亚马逊,而不是每次显示或索引调用。

      【讨论】:

        猜你喜欢
        • 2018-11-20
        • 2016-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多