2013-04-01 51 views
1

我可能会遗漏一些简单的东西,但是如何通过非持久属性找到记录?Rails find_by访问者

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

    def slug 
    title.parameterize 
    end 
end 

我使用Rails 3.2.11

回答

1

不幸的是,我认为要做到这一点的唯一方法是通过所有的记录进行迭代,直到你找到你的目标,如:

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

可能有其他表达方式逻辑,但我认为他们都需要大量的Ruby迭代。因此,如果您希望它对大量帖子有效,最好保留该属性。

+0

这就是我为了时间的利益而做的,我想这很有道理。感谢您的确认Dan。 – mehulkar