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 句を追加するのですか?
ありがとう。