Rails find_by accessor

时间:2013-04-01 02:50:36

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我可能会遗漏一些简单的内容,但如何通过非持久属性找到记录?

示例

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

  def slug
    title.parameterize
  end
end

我正在使用Rails 3.2.11

1 个答案:

答案 0 :(得分:1)

不幸的是,我认为执行此操作的唯一方法是遍历所有记录,直到找到目标,如:

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

可能存在表达相同逻辑的替代方法,但我认为它们都需要大量的Ruby迭代。因此,如果您希望它对大量帖子有效,那么保留该属性会更好。