0

私はこのスキーマを持っています

product.rb:

has_many :families_products  
has_many :families, :through => :families_products

ファミリー.rb:

has_many :families_products  
has_many :products, :through => :families_products

family_product.rb:

belongs_to :product  
belongs_to :family

テーブルにfamilies_productは という属性があり、price作成後に更新しようとするとエラーがスローされます。

1.9.3p0 :027 > family_product = FamiliesProduct.first
  FamiliesProduct Load (0.9ms)  SELECT `families_products`.* FROM `families_products`         LIMIT 1
 => #<FamiliesProduct family_id: 1, product_id: 1, created_at: "2012-09-10 12:31:54",     updated_at: "2012-09-10 12:31:54", points: nil> 
1.9.3p0 :028 > family_product.points = 2
 => 2 
1.9.3p0 :029 > family_product.save
   (0.2ms)  BEGIN
   (0.7ms)  UPDATE `families_products` SET `points` = 2, `updated_at` = '2012-09-10     12:53:05' WHERE `families_products`.`` IS NULL
   (0.1ms)  ROLLBACK
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'families_products.' 
in 'where clause': UPDATE `families_products` SET `points` = 2, 
`updated_at` = '2012-09-10     12:53:05' WHERE `families_products`.`` IS NULL

生成されたクエリにエラーがあることがわかりました。手がかりはありますか?

4

2 に答える 2

0

これは、少なくとも「family.rb」(および場合によっては「product.rb:」)が正しく構成されていないために発生します。外部キー関係を定義しましたか?システムは、テーブルをリンクする方法をどのように推測するのですか?

于 2012-09-10T13:25:08.103 に答える
0

このようなテーブル結合モデルを使用することになっているとは思いません。これを試して:

 @family = Family.first #or some other family
 families_product = @family.families_products.where({:product_id => Product.first.id})
 families_product.points = 2
 families_product.save
于 2012-09-10T13:26:23.867 に答える