在不同模型之间的关联中,可以避免使用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。
答案 0 :(得分:3)
我已经多次这样做了,不知道为什么它不适合你。夹具看起来正确(没有多态(Category)
)。该关联是否适用于您应用的其余部分?你使用的是什么版本的Rails?你应该在Category
模型中使用这样的东西:
belongs_to :parent, :class_name => "Category"
如果你想强迫它发挥作用,你可以像这样设置一个明确的parent_id
:
books:
name: Books
parent_id: <%= Fixtures.identify :forsale %>
但这显然不太理想......