Friendly_id范围问题。数字slu ..

时间:2013-02-17 18:12:22

标签: ruby-on-rails ruby-on-rails-3 friendly-id

我正在尝试使用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吗? 我使用了错误的语法吗?不知道我哪里出错了。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

我认为您应该查看导轨中用于查找模型的from_paramto_param方法:http://apidock.com/rails/ActiveRecord/Base/to_param