1

我敢肯定这已经在很多地方被问过(并得到了回答),而且我可能不知道如何正确提问。这是我的问题,我正在尝试设置一个简单的 Product 到 ProductType 关联。我是 RoR 的新手,由于 Rails 中有这么多内置助手,我正在寻找该解决方案,而不是通常手动构建所有内容。

这就是我所拥有的模型(我也很困惑如何/何时在 Rails 中使用单数/复数描述符)。

产品.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_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,因此该错误是有道理的;但这不是我故意做的。

不是抱怨,但我至少已经阅读了设置 microposts 示例应用程序的 RoR 指南。还有其他关于使用 RoR 协会的优秀教程吗?

4

1 回答 1

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 整数列(也为它添加一个索引以加快查找速度)。

于 2013-04-19T22:27:00.737 回答