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 回答