Обновление проблемы 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