У меня есть что-то вроде следующей в Rails 4 приложения: сRails 4 + Веснушка: поиск вещи Пользователь «понравившаяся» их атрибуты (полиморфный has_many через ассоциацию)
class Like < ActiveRecord::Base
belongs_to :liker, class_name: 'User'
belongs_to :likeable, polymorphic: true
end
class Photo < ActiveRecord::Base
# has a `title` and `description` attributes
has_many :likes, as: likeable
has_many :likers, through: :likes
end
class Song < ActiveRecord::Base
# has a `title` and `description` attributes
has_many :likes, as: likeable
has_many :likers, through: :likes
end
class Video < ActiveRecord::Base
# has a `title` and `description` attributes
has_many :likes, as: likeable
has_many :likers, through: :likes
end
class User < ActiveRecord::Base
has_many :likes, source: :liker
has_many :liked_photos, through: :likes, source: :likeable, source_type: 'Photo'
has_many :liked_videos, through: :likes, source: :likeable, source_type: 'Video'
has_many :liked_songs, through: :likes, source: :likeable, source_type: 'Song'
end
Я хотел бы иметь где текущий пользователь может искать фотографии, песни и видео по своим title
или description
, но результаты могут быть ограничены только теми, которые ему понравились. Я прочитал некоторые другие сообщения, касающиеся поиска has_many, но я запутался в полиморфной стороне вещей. Я думал, поиск будет что-то вроде этого:
@search = Sunspot.search(Photo, Song, Video) { fulltext params[:term] }
Но тогда я запутался, как сфера его current_user.likes. Или следует искать на модели Like
? Например:
@search = Like.search { fulltext params[:term] }
Что должно быть включено в методе searchable
, и в какой модели (ей) делает это лучше всего принадлежит?
если вы не возражаете, не могли бы вы пересмотреть мой вопрос, связанный с вашей проблемой? http://stackoverflow.com/questions/42345963/rails-sunspot-with-polymorphic-association – LearningROR
@LearningROR, я не работал с Rails или Sunspot последние пару лет, поэтому я, вероятно, не очень хороший ресурс с этой точки зрения. – robertwbradford