Я использую акты-а-taggable-на драгоценный каменьRails добавить две рамки с активным рекордным результатом
я использовать одно поле для поиска по tag_name и user_name
User.rb
class User < ActiveRecord::Base
acts_as_taggable
attr_accessor: :user_name, :age, :country, tag_list
scope :tagged_with, lambda { |tag|
{
:joins => "INNER JOIN taggings ON taggings.taggable_id = user.id\
INNER JOIN tags ON tags.id = taggings.tag_id AND taggings.taggable_type = 'User'",
:conditions => ["tags.name = ?", tag],
:order => 'id ASC'
}
}
def self.search(search)
if search
where('name LIKE ?', "%#{search}%") + tagged_with(search)
else
scoped
end
end
end
Но у меня проблема с разбивкой по страницам, когда я получаю это как Array, и я использовал «will_paginate/Array» в config/initializer/will_paginate.rb, это не работает.
Контроллер пользователя
class UserController < ActionController::Base
def index
@users = User.search(params[:search]).paginate(:per_page => per_page, :page => params[:page])
end
консоли.
User.search ("best") => Должен искать как тег_имя, так и имя_пользователя и возвращать результат ActiveRecord.
я хочу, чтобы получить результат User.search («лучший») союз с результатом имени тега User.tagged_with («лучший»)
Можете ли вы помочь мне, чтобы добавить этот прицелы, как ActiveRecord связи использовать разбиение на страницы без проблем.
Я думаю, что ваша сфера может быть переписана: 'Область применения: tagged_with, лямбда {| тег | joins (: tags) .where (tags: {name: tag}). order ('users.id ASC')}) ' – MrYoshiji