Проблема области действия Friendly_id. Числовой слаг

Я пытаюсь использовать Дружественный 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?
Я использую неправильный синтаксис? Не знаю, где я ошибся.

Любая помощь будет оценена по достоинству. Спасибо.


person Jason Varga    schedule 17.02.2013    source источник


Ответы (1)


я думаю, что вам следует взглянуть на методы from_param и to_param, которые используются в rails для поиска моделей: http://apidock.com/rails/ActiveRecord/Base/to_param

person phoet    schedule 17.02.2013