0

我有 3 个表(产品、订单、products_orders)我有 3 个模型文件(product.rb、order.rb、product_order.rb)

因此 3 类

class Product < ActiveRecord::Base
  attr_accessible ...
    has_many :product_orders
    has_many :orders, :through => :product_orders
end

class Order < ActiveRecord::Base
  attr_accessible ...
    has_many :product_orders
    has_many :products, :through => :product_orders
end

class ProductOrder < ActiveRecord::Base
  attr_accessible :order_id, :product_id, ...
    belongs_to :product
    belongs_to :order
end

第一个问题.. 我可以在 products_orders 表中有主键(id)没有问题吗?我在这里阅读了http://guides.rubyonrails.org/association_basics.html关于一些可能的问题,但我不确定。

第二个问题..如果我尝试生成 ER 图(rake erd),它会告诉我:

警告:忽略无效模型 ProductOrder(表 product_orders 不存在)

# 缺失的 's' 是我不知道如何解决的问题(我只想拥有那个下划线模型,因为模型名称与我认为的表名称不同会令人困惑)

警告:忽略无效关联 :product_orders on Order(模型 ProductOrder 存在,但不包含在域中)

警告:忽略无效关联:Product 上的 product_orders(模型 ProductOrder 存在,但不包含在域中)

请帮忙,这是我的第一个测试 Rails 应用程序

4

2 回答 2

2

您的ProductOrders模型的表名称是什么,如果不是product_orders,Rails 是如何知道在哪里查找的?

修复您的表名或模型名以使其符合约定,或者使用self.table_name = ....

此外,通常人们不会为这类关联定义模型,他们使用has_and_belongs_to_many. 除非需要与关联一起存储额外的信息。

于 2013-06-10T11:16:30.683 回答
1

您好,感谢您的帮助,

class ProductsOrder < ActiveRecord::Base
  set_table_name "products_orders"

是一个解决方案

于 2013-06-13T12:26:29.983 回答