Question

I'm trying to use Friendly ID to create more custom urls. However, the column I want to use for a slug is still a number. I don't want to create a separate column just for the slug, since it would be identical.

I have a Lot that belongs to an Auction.
Auctions have many Lots (items for sale).

A Lot has a lot_number, which is unique to an Auction. It's not unique throughout the entire table, though. It's basically just a way to order the lots in each auction.

My URLs look like: /auctions/1/lots/21 (/auctions/:auction_id/lots/:id)
I want them to be: /auctions/1/lots/1 (/auctions/:auction_id/lots/:lot_number)

I added the following to lot.rb:

extend FriendlyId
friendly_id :lot_number

It almost works. It shows me a Lot with the correct lot number, but the wrong auction.
I read about scopes on the Friendly ID docs, which sounded perfect. I could scope the lot against the auction...
So I tried:

extend FriendlyId
friendly_id :lot_number, :use => :scoped, :scope => :auction_id

Now I see the following error:

SQLite3::SQLException: no such column: lots.slug: SELECT  "lots".* FROM "lots"  WHERE "lots"."slug" = '1' LIMIT 1

Why is the SQL WHERE lots.slug = 1? Shouldn't it be WHERE lots.auction_id = 1?
Am I using the wrong syntax? Not sure where I've gone wrong.

Any help would be appreciated. Thanks.

Was it helpful?

Solution

i think that you should have a look at from_param and to_param methods that are used in rails to lookup models: http://apidock.com/rails/ActiveRecord/Base/to_param

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top