LoginSignup
3
3

More than 5 years have passed since last update.

STI modelでfriendly_idを使う

Last updated at Posted at 2014-11-20

モデル毎にslugのunique判定をする

validatesのuniquenessと似た感じで、scopeを使う。
STI modelではtypeカラムでモデル毎のデータを表しているので、scopeにtypeを指定する。

以下の様に、継承元のモデルでfriendly_idに指定する。

hoge.rb
class Hoge < ActiveRecord::Base
  extend FriendlyId
  friendly_id :from_data,
              use: [:slugged, :finders, :scoped],
              scope: :type
end

モデル検索

2014/11/23 追記

パターン1
friendly_id :foo, use: :slugged # you must do MyClass.friendly.find('bar')
パターン2
friendly_id :foo, use: [:slugged, :finders] # you can now do MyClass.find('bar')

STI(単一テーブル継承)使っているモデルだと、子モデルでfindersが有効にならないようでfindメソッドにslugの値を入れても検索してもRecordNotFoundとなる。
なので、パターン1を使うようにする。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3