5

以下の関係を念頭に置いてください。

class Style < ActiveRecord::Base
  has_many :stylefeatures, :dependent => :destroy
  has_many :features, :through => :stylefeatures
end

class Stylefeature < ActiveRecord::Base
  belongs_to :style
  belongs_to :feature
end

class Feature < ActiveRecord::Base
  has_many :stylefeatures, :dependent => :destroy
  has_many :styles, :through => :stylefeatures
end

Style モデルでこのメソッドを高速化するために、インデックスを最も効率的に追加するにはどうすればよいでしょうか。

  def has_feature? (arg)
    self.features.where(:name=>arg).exists?
  end
4

3 に答える 3

2

(配列として) にインデックスuniqueを追加し、 にインデックスを追加することをお勧めします。stylefeatures style_id and feature_iduniquefeatures.name

于 2013-09-20T22:09:59.247 に答える
1

Tiloによる回答への小さな変更:remove_indexの代わりに使用drop_index:

class AddIndexesToStyleFeatures < ActiveRecord::Migration
  def self.up
    add_index :stylefeatures , [:style_id , :feature_id] , :unique => true
  end

  def self.down
    remove_index :stylefeatures, [:style_id , :feature_id]
  end
end
于 2014-10-05T17:55:27.660 に答える