Я пытаюсь связать две таблицы, в которых выполняется определенное условие.
Это схема типа «у пользователя есть книги в коллекции».Эта коллекция может быть library или wishlist .
Есть таблица пользователей (довольно стандартная), таблица книг (подробности не имеют значения) и таблица соединений, называемая collection_books, которая выглядит следующим образом:
id |user_id |book_id |collection_type
Используя Rails Docs в качестве ссылки, мой код выглядит следующим образом:
class User < ApplicationRecord
has_many :library_collection_books,
foreign_key: :user_id,
class_name: :CollectionBook,
-> { where collection_type: 'library'}
end
vs пример кода Rails Docs:
class Parts < ApplicationRecord
has_and_belongs_to_many :assemblies,
-> { where "factory = 'Seattle'" }
end
Это ошибка, которую я получаю в консоли rails:
user.rb:36: syntax error, unexpected '\n', expecting =>
Я предполагаю, что это не относится к типу ассоциации has_and_belongs_to
, поэтому проблема должна заключаться в синтаксисе того, как я задаю внешний ключи название класса.
Для записи, я могу просто сделать
has_many :collection_books,
-> { where collection_type: 'library' }
, и это работает.Но мне понадобится эта ассоциация либо для библиотеки, либо для книг желаний.