フレンドリIDを使用して、より多くのカスタムURLを作成しようとしています。ただし、スラッグに使用したい列はまだ数字です。スラッグのためだけに別の列を作成したくありません。同じになるからです。
オークションに属するロットがあります。オークションにはたくさんのロット(売り物)があります。
ロットには、オークションlot_number
に固有のがあります。ただし、テーブル全体で一意ではありません。これは基本的に、各オークションでロットを注文する方法にすぎません。
私のURLは次のようになります:/ auctions / 1 / lots / 21(/ auctions /:auction_id / lots /:id)
次のようにします:/ auctions / 1 / lots / 1(/ auctions /:auction_id / lots /:lot_number )。
lot.rbに以下を追加しました:
extend FriendlyId
friendly_id :lot_number
それはほとんど動作します。正しいロット番号のロットが表示されますが、オークションが間違っています。
私はFriendlyIDのドキュメントでスコープについて読みましたが、これは完璧に聞こえました。私はオークションに対して多くのスコープを設定することができました...
それで私は試しました:
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
ですか?
間違った構文を使用していますか?どこが間違っているのかわからない。
どんな助けでもいただければ幸いです。ありがとう。