Я пытаюсь использовать Дружественный ID для создания дополнительных пользовательских URL-адресов. Однако столбец, который я хочу использовать для слага, по-прежнему является числом. Я не хочу создавать отдельный столбец только для слага, так как он будет идентичным.
У меня есть лот, принадлежащий аукциону.
На аукционах есть много лотов (предметы для продажи) .
Лот имеет номер lot_number
, уникальный для аукциона. Однако он не уникален для всей таблицы. По сути, это просто способ упорядочить лоты на каждом аукционе.
Мои URL-адреса выглядят следующим образом: /auctions/1/lots/21 (/auctions/:auction_id/lots/:id)
Я хочу, чтобы они были следующими: /auctions/1/lots/1 (/auctions/:auction_id/lots /:большое число)
Я добавил в lot.rb следующее:
extend FriendlyId
friendly_id :lot_number
Это почти работает. Он показывает мне лот с правильным номером лота, но с неправильным аукционом.
Я читал об областях действия в документах Friendly ID, которые звучали идеально. Я мог сравнить лот с аукционом...
Поэтому я попытался:
extend FriendlyId
friendly_id :lot_number, :use => :scoped, :scope => :auction_id
Теперь я вижу следующую ошибку:
SQLite3::SQLException: no such column: lots.slug: SELECT "lots".* FROM "lots" WHERE "lots"."slug" = '1' LIMIT 1
Почему SQL WHERE lots.slug = 1
? Разве это не должно быть WHERE lots.auction_id = 1
?
Я использую неправильный синтаксис? Не знаю, где я ошибся.
Любая помощь будет оценена по достоинству. Спасибо.