0

3 つのテーブル (products、orders、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を読みましたが、よくわかりません。

2番目の質問.. ER図(rake erd)を生成しようとすると、次のように教えてくれます:

警告: 無効なモデル ProductOrder を無視します (テーブル product_orders は存在しません)

# 不足している 's' は、修正方法がわからない問題です (モデル名がテーブル名と異なると混乱するため、アンダースコア モデルが必要なだけです)

警告: 注文の無効な関連付け :product_orders を無視しています (モデル ProductOrder は存在しますが、ドメインには含まれていません)

警告: Product の無効な関連付け :product_orders を無視しています (モデル ProductOrder は存在しますが、ドメインには含まれていません)

助けてください、それは私の最初のテストレールアプリです

4

2 に答える 2

2

ProductOrdersモデルのテーブルの名前は何ですか?そうでない場合、 product_ordersRailsはどのようにしてどこを見ればよいのかを知ることができますか?

規則に合うようにテーブル名またはモデル名を修正するか、または でテーブル名を明示的に指定してください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 に答える