0

今のところ、ネストされたルーティングを次のように設定していますが、この場合、

  • example.com/shop/walmart/topic/1 <= 初めてトピックを作成した場合
  • example.com/shop/bestbuy/topic/2 <= トピックを 2 回目に作成した場合
  • example.com/shop/walmart/topic/3 <= トピックを 3 回目に作成した場合

ウォルマート ショップに属するレコードが 2 つしかないにもかかわらず、 ID は'3'
と表示され ます。この ID をカウントアップ スタイルにするにはどうすればよいですか? 別のコラムか何かを用意する必要がありますか?

resources :communities, :path => "shop", do
resources :community_topics, :path => "topic", :as => :'topic'
end
4

1 に答える 1

1

URLの番号がレコードの番号であるかどうかは本当に重要ですか?idそれが重要な場合は、ショップのスラッグ「ウォルマート」、「ベストバイ」などに似た番号「スラッグ」を作成できます。トピックテーブルに新しい列を作成し、before_createフィルターを使用してその値をインクリメントする必要があります。このようなもの:

class Topic
  before_validation :increment_slug, :on :create
  validates_uniqueness_of :slug, scope: :shop_id

  private
  def increment_slug
    self.slug = Topic.where("shop_id = ?", shop_id).order("slug DESC").limit(1).slug + 1
  end
end

ここでの「slug」が数値フィールドであることを確認して、+との並べ替えが正しく機能するようにします。

于 2012-12-24T18:13:49.227 に答える