4

在不同模型之间的关联中,可以避免直接通过使用夹具名称来设置外键 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 的情况下让一个固定装置引用同一类中的另一个固定装置?

更新:

在括号之间附加类名,例如多态 belongs_to固定装置也不起作用。这样做:

books:
  name: Books
  parent: forsale (Category)

生成一个随机parent_id的 forbooks而不是forsale的 ID。

4

1 回答 1

4

我已经这样做了好几次,但不知道为什么它不适合你。固定装置看起来是正确的(没有 polymorphic (Category))。该关联是否适用于您的应用程序的其余部分?你用的是什么版本的 Rails?你的Category模型中应该有这样的东西:

belongs_to :parent, :class_name => "Category"

如果你只想强制它工作,你可以parent_id像这样设置一个显式:

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

但这显然不太理想...

于 2010-02-16T00:13:01.500 回答