Я настроил полиморфную симпатию в моем приложении, где пользователю могут понравиться другие модели, например, книга, глава, статья ... Теперь я попытался продвинуться немного дальше, позволив пользователю стать другим пользователем, но я запускаюна эту ошибку:
Validation failed: User must exist
, указывающая на
likes.where(item: item).create!
Это моя первоначальная настройка для симпатии других моделей, кроме модели пользователя
like.rb
belongs_to :user
belongs_to :item, polymorphic: true
user.rb
has_many :likes, dependent: :destroy
def toggle_like!(item)
if like = likes.where(item: item).first
like.destroy
else
likes.where(item: item).create!
end
end
def likes?(item)
likes.where(item: item).exists?
end
likes_controller.rb
class LikesController < ApplicationController
before_action :authenticate_user!
def toggle
if params[:book_id]
item = Book.friendly.find(params[:book_id])
elsif params[:user_id]
item = User.find_by(username: params[:username])
end
current_user.toggle_like!(item)
redirect_back(fallback_location: root_path)
end
end
book.rb
has_many :likes, as: :item, dependent: :destroy
Чтобы пользователю понравился другой пользователь, яизменил user.rb с
has_many :likes
на
has_many :likes, as: :item, dependent: :destroy
Это когда я получаю ошибку
Validation failed: User must exist
, указывающую на
likes.where(item: item).create!
в user.rb