在Rails中引用相同类型的灯具

时间:2010-02-15 23:11:47

标签: ruby-on-rails unit-testing fixtures

在不同模型之间的关联中,可以避免使用this answer中的夹具名称直接设置外键ID。那些自引用关联,例如使用acts_as_tree时?试试这个:

# categories.yml
forsale:
  name: For Sale
  parent_id: nil

books:
  name: Books
  parent: forsale

我收到此错误:

SQLite3::SQLException: table categories has no column named parent: INSERT INTO "categories" ("name", "parent") VALUES ('Books', 'forsale')

有没有办法让一个灯具在不使用显式ID的情况下在同一个类中反映另一个?

更新

polymorphic belongs_to灯具之类的括号中附加类名也不起作用。这样做:

books:
  name: Books
  parent: forsale (Category)

parent_id生成随机books而不是forsale的ID。

1 个答案:

答案 0 :(得分:3)

我已经多次这样做了,不知道为什么它不适合你。夹具看起来正确(没有多态(Category))。该关联是否适用于您应用的其余部分?你使用的是什么版本的Rails?你应该在Category模型中使用这样的东西:

belongs_to :parent, :class_name => "Category"

如果你想强迫它发挥作用,你可以像这样设置一个明确的parent_id

books:
  name: Books
  parent_id: <%= Fixtures.identify :forsale %>

但这显然不太理想......