0

has_many スルー レコードの更新で問題が発生しています。これが私のセットアップです:

class TastingGroup < ActiveRecord::Base
  has_many :group_wine
  has_many :wines, through: :group_wine
end

class GroupWine < ActiveRecord::Base
  belongs_to :tasting_group
  belongs_to :wine
end

class Wine < ActiveRecord::Base      
  has_many :group_wine
  has_many :tasting_groups, through: :group_wine
end

TastinGroup 内のワインの順序が問題になるため、acts_as_list を使用しようとしていました。そのため、GroupWine モデルに「位置」属性を追加しました。

ただし、GroupWine レコードを更新しようとすると、次のエラーが発生します。これが私がやっていることです。

gw = GroupWine.first
#<GroupWine:0x007fd9f7c38b50> {
         :wine_id => 1,
         :tasting_group_id => 1,
         :position => nil
}

gw.position = 1
gw.save

そして、ここに私が得るエラーがあります...

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'group_wines.' in 'where clause': UPDATE `group_wines` SET `position` = 3 WHERE `group_wines`.`` IS NULL

group_wines の NULL はどうなっているのですか? なぜ where 句を追加するのですか?

ありがとう。

4

1 に答える 1

1

group_wineオブジェクトを複数形にしてみてくださいgroup_wines

class TastingGroup < ActiveRecord::Base
  has_many :group_wines
  has_many :wines, through: :group_wines
end

class GroupWine < ActiveRecord::Base
  belongs_to :tasting_group
  belongs_to :wine
end

class Wine < ActiveRecord::Base      
  has_many :group_wines
  has_many :tasting_groups, through: :group_wines
end
于 2013-02-18T22:35:54.553 に答える