与不一致的灯具混淆

时间:2016-08-05 19:52:19

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

我的灯具有问题导致它们表现得很奇怪。 “Score”模型将“Users”与“Assignments”连接起来,并为其他一些信息添加其他列。灯具看起来像这样:

Score.yml

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

这会产生错误:ActiveRecord :: Fixture :: FixtureError:table“scores”没有名为“assignment”的列。

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

但是我很困惑,因为我所有的其他灯具都使用了我在这里尝试使用的相同类型的相对键。例如,我的“作业”装置指的是“研讨会”,而不是“研讨会_id”。

assignment.yml

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

这使我可以轻松地从我的seminars.yml文件中引用特定的fixture,这样我就不需要找到rails生成的奇怪的id号。我想对我的得分装置做同样的事情。

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

提前感谢您的任何见解。

-Jeff

1 个答案:

答案 0 :(得分:1)

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

  

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