因此有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'是我不知道如何解决的问题(我只想拥有那个下划线模型,因为我认为模型名称与表名不同) < / p>
警告:忽略无效关联:订单上的product_orders(模型ProductOrder存在,但未包含在域中)
警告:忽略无效关联:产品上的product_orders(型号ProductOrder存在,但未包含在域中)
请帮助,这是我的第一个测试应用程序
答案 0 :(得分:2)
ProductOrders
模型的表格名称是什么,如果不是product_orders
,Rails是如何知道在哪里看的?
修复您的表名或模型名称以使其符合约定,或使用self.table_name = ...
显式指定表名。
此外,通常人们没有为这种关联定义模型,他们使用has_and_belongs_to_many
。这是除非需要将额外信息与关联一起存储。
答案 1 :(得分:1)
您好,感谢您的帮助,
class ProductsOrder < ActiveRecord::Base
set_table_name "products_orders"
是一个解决方案