Я пытаюсь создать таблицу соединений с именем: books_users, где столбец в книгах: Applicant является логическим значением, где, если человек нажимает ссылку «просмотреть эту книгу», действие утверждения в контроллере книг выполняетthis:
def claim
book = Book.find(params[:id])
book.claims << current_user unless book.claims.include?(current_user)
redirect_to current_user
flash[:notice] = "You have a new book to review!"
end
Цель этого - для моих пользователей, которые зарегистрировались в качестве рецензентов, могут переходить на страницы показа книг, и если они решат рецензировать книгу, загруженную автором, которую рецензент находит черезжанры?Затем они, по сути, указывают, что будут рецензировать эту книгу, которую их обозрение в конечном итоге обнаружит на Амазонке как проверенный купленный отзыв, а не на пустом текстовом обзоре на сайте на странице показа книг (это заставит автора, который подписывается наСервис обзора очень рад).
Мои модели выглядят так:
book.rb
class Book < ApplicationRecord
mount_uploader :avatar, AvatarUploader
belongs_to :user
has_and_belongs_to_many :genres
has_and_belongs_to_many :claims, join_table: :books_users, association_foreign_key: :user_id
end
user.rb
class User < ApplicationRecord
mount_uploader :avatar, AvatarUploader
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :books
enum access_level: [:author, :reviewer]
has_and_belongs_to_many :claims, join_table: :books_users, association_foreign_key: :book_id
end
Когда рецензент нажимает на ссылку, чтобы просмотреть книгу, я получаю NameError в BooksController # претензия
неинициализированная константа Book:: Claim
Я пытался указать отношения hmbtm в модели после того, как назван foreign_key_association, я делаю имя_класса: ClassName, думая, что это может исправить ошибку, но я получаю новое сообщение Aкласс был передан в :class_name
, но мы ожидаем строку.
Я действительно сбит с толку, и мне нужен кто-то, чтобы объяснить это мне.Спасибо!