我确信已经在很多地方询问过(并回答过),而且我可能不知道如何正确地询问。这是我的问题,我正在尝试将简单的Product设置为ProductType关联。我是RoR的新手,因为在Rails中有很多内置帮助器,我正在寻找解决方案,而不是通常手工构建所有内容。
这就是我对模型的看法(我对在Rails中如何/何时使用单数/复数描述符感到很困惑)。
product.rb
class Product< ActiveRecord::Base
attr_accessible :name
has_one :product_tpe
end
pruduct_type.rb
class ProductType< ActiveRecord::Base
attr_accessible :name
belongs_to :product
end
这显然是错误的(我认为我不太了解belongs_to:方法)。在通常的SQL关系中,product表将与product_types表的多对一关系链接。
我收到了错误:
SQLite3::SQLException: no such column: product_types.product_id: SELECT "product_types".* FROM "product_types" WHERE "product_types"."product_id" = 1 LIMIT 1
因为我显然不想在product_types表中使用product_id,所以错误是有道理的;但这不是我故意做的事。
不是抱怨,但我已经完成了至少设置微博样本应用程序的RoR指南。是否还有其他与RoR协会合作的优秀教程?
答案 0 :(得分:1)
你的关系只是倒置了。具有外键的记录应具有belongs_to
。此外,您可能希望在另一端使用has_many关系。所以:
class Product < ActiveRecord::Base
attr_accessible :name
belongs_to :product_tpe
end
class ProductType< ActiveRecord::Base
attr_accessible :name
has_many :products
end
最后,在迁移中,您应该添加一个product_type_id整数列(为其添加索引以及更快的查找)。