我正在尝试使用Friendly ID来创建更多自定义网址。但是,我想用于slug的列仍然是一个数字。我不想为slug创建一个单独的列,因为它会是相同的。
我有拍> 属于拍卖 拍卖有很多 Lots (待售商品)。
Lot 有一个lot_number
,这是 Auction 所独有的。但是,整个表格并不是唯一的。它基本上只是一种在每次拍卖中订购拍品的方式。
我的网址如下:/ auction / 1 / lots / 21(/ auction /:auction_id / lots /:id)
我希望他们是:/ auction / 1 / lots / 1(/ auction /:auction_id / lots /:lot_number)
我将以下内容添加到 lot.rb :
extend FriendlyId
friendly_id :lot_number
它几乎可以工作。它向我展示了一个正确的批号,但错误的拍卖
我阅读了有关友好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
吗?
我使用了错误的语法吗?不知道我哪里出错了。
任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
我认为您应该查看导轨中用于查找模型的from_param
和to_param
方法:http://apidock.com/rails/ActiveRecord/Base/to_param