1

単純なものが欠けている可能性がありますが、永続化されていない属性でレコードを見つけるにはどうすればよいですか?

class Post < ActiveRecord::Base
  attr_accessible :title
  attr_accessor :slug

  def slug
    title.parameterize
  end
end

Rails 3.2.11を使用しています

4

1 に答える 1

1

残念ながら、これを行う唯一の方法は、次のように、ターゲットが見つかるまですべてのレコードを反復処理することだと思います。

def self.find_by_slug(slug)
   Post.select("title").detect { |post| post.slug == slug }
end

おそらく、同じロジックを表現する別の方法があると思いますが、いずれも Ruby を何度も繰り返す必要があると思います。したがって、多数の投稿に対して効率的にしたい場合は、属性を永続化することをお勧めします。

于 2013-04-01T02:55:07.720 に答える