Обновление проблемы has_many: через запись

У меня проблема с обновлением 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

Я пытался использовать для этого act_as_list, потому что порядок вин в TastinGroup имеет значение, поэтому я добавил атрибут 'position' в модель 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

Что случилось с NULL для group_wines и почему он добавляет предложение where?

Благодарю.

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
Другие вопросы по тегам