【问题标题】:Confusion with inconsistent fixtures与不一致的固定装置混淆
【发布时间】:2016-08-05 19:52:19
【问题描述】:

我的灯具出了点问题,导致它们表现得很奇怪。 “分数”模型将“用户”与“作业”与附加列连接起来以获取一些其他信息。夹具如下所示:

分数.yml

one:
    assignment: pythag
    position: 2
    student: natalie
    points: 75

这会产生一个错误:ActiveRecord::Fixture::FixtureError: table "scores" has no column named "assignment"。

这个错误是有道理的,因为我的分数架构包含一个名为“:student_id”的列,而不是一个名为“:student”的列。

但我很困惑,因为我所有的其他装置都使用了我在这里尝试使用的相同类型的相对键。例如,我的“assignments”固定装置指的是“seminar”,而不是“seminar_id”。

assignment.yml

one:
  position: 1
  name: Pythag
  possible: 100
  seminar: one

这让我可以很容易地从我的seminars.yml 文件中引用一个特定的fixture,这样我就不需要找到rails 产生的奇怪的ID 号。我想对我的得分装置做同样的事情。

关于什么可能导致一个夹具需要绝对列名,而其他夹具容易接受相对列名的任何想法?

提前感谢您的任何见解。

-杰夫

【问题讨论】:

    标签: ruby-on-rails sqlite key yaml fixtures


    【解决方案1】:

    您应该在 Score 模型中定义关联。看看documentation,尤其是这部分:

    Active Record 反映夹具的模型类,查找所有 belongs_to 关联,并允许您为关联指定目标标签(monkey:george)而不是 FK 的目标 id ( monkey_id: 1)

    【讨论】:

    • 有趣。适当的关联之前已经到位。但是由于您向我指出的文档,我了解了“多态”标签。我有点困惑为什么这解决了问题,但确实如此。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 2017-10-20
    • 2012-12-18
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    相关资源
    最近更新 更多