#ruby-on-rails
#ruby-on-rails
Вопрос:
У меня есть m: n ассоциация с кешем счетчика. Я хочу удалить пользователя и удалить соответствующие записи из ассоциации users_items. sql-запрос, который должен удалять записи из ассоциации users_items, неверен.
class User < ApplicationRecord
has_many :users_items, class_name: 'UsersItem', dependent: :destroy
has_many :items, through: :users_items
end
class Item < ApplicationRecord
has_many :users_items, class_name: 'UsersItem', dependent: :destroy
has_many :users, through: :users_items
end
class UsersItem < ApplicationRecord
belongs_to :user, counter_cache: true
belongs_to :item, counter_cache: true
end
u = User.last
u.destroy
(0.3ms) BEGIN
UsersItem Load (0.4ms) SELECT "users_items".* FROM "users_items" WHERE "users_items"."user_id" = $1 [["user_id", 41]]
UsersItem Destroy (1.9ms) DELETE FROM "users_items" WHERE "users_items"."" IS NULL
(0.3ms) ROLLBACK
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: zero-length delimited identifier at or near """")
LINE 1: DELETE FROM "users_items" WHERE "users_items"."" IS NULL
Комментарии:
1. Можете ли вы попробовать
foreign_key
явно настроитьusers_items
ассоциацию?
Ответ №1:
Проблема была в таблице users_items. Таблица была создана без первичного ключа. Это начало работать, когда я добавил основной идентификатор.
Миф