2013-04-01 55 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