【问题标题】:Rails eager loading relational table with only 1 piece of dataRails 急切加载关系表,仅包含 1 条数据
【发布时间】:2011-07-28 19:05:40
【问题描述】:

为了简化我的问题,假设我有一个歌曲和一个艺术家表:

songs
-----
id
name
artist_id

artists
-------
id
name

大部分时间我都在查询歌曲,我总是需要附上艺术家的名字。为歌曲添加另一个名为 artist_name 的列是否有意义,这样我就不需要执行 .includes(:artist) 预加载?

我认为我当前的设计是典型的设计,但最有效的设计是什么,或者在 Rails 中处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails database ruby-on-rails-3 database-design


    【解决方案1】:
    Song.find(2, :include => :artist)
    

    【讨论】:

    • 对不起,我写了 .joins(:artist) 但我打算写 .includes(:artist) 这是我目前正在做的。
    【解决方案2】:

    回答我自己的问题:

    似乎数据库非规范化只在重读应用程序中才有意义,应该首先广泛分析。

    一些选项:

    1. 将包含添加到歌曲的默认范围
    2. 非规范化艺术家姓名并使用模型挂钩来确保数据完整性

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2014-01-19
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多