Я пытаюсь запросить несколько активных моделей записей, передавая параметры запроса в контроллер.Внутри моего tales_controller.rb
у меня есть следующий метод индекса:
def index
@tales_count = Tale.all.count
if params[:search]
@tales = Tale.joins(:category)
.where('category.title ILIKE ?', "%#{params[:search]}%")
.where(
'title ILIKE :search OR
subtitle ILIKE :search OR
short_description ILIKE :search', search: "%#{params[:search]}%"
)
else
@tales = Tale.all
end
render template: 'tales/index'
end
Теперь я не могу найти правильное решение этой проблемы, так как по большей части PG выдает ошибку, говоря:: PG::AmbiguousColumn: ERROR: column reference "title" is ambiguous
.Я чувствую, что это связано с тем, что я пытаюсь запросить поле заголовка в Tale-, а также в Category-Model.Однако я сам не могу решить эту проблему.
Предоставляя метод index с правильными запросами, я ожидаю, что смогу запросить пару полей в Tale-Model (а именно title
, * 1009).* и short_description
и, возможно, больше), а также поле title
в модели категорий.
Модель категорий ссылается на модель сказок.Вот как выглядит schema.rb
:
create_table "tales", force: :cascade do |t|
t.string "public_id"
t.string "title"
t.string "subtitle"
t.string "player_count"
t.string "short_description"
t.datetime "published_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.bigint "category_id"
t.bigint "author_id"
t.index ["author_id"], name: "index_tales_on_author_id"
t.index ["category_id"], name: "index_tales_on_category_id"
end
РЕДАКТИРОВАТЬ: хм, я просто понял, что, запрашивая способ, которым я сейчас занимаюсь, я ожидаю, что category.title
И любое из других полей Taleнести поисковый термин.Честно говоря, это не то, что я хотел.