2011-02-02 6 views
3

私はこれについて良い方法を見つけようとしています。レールでのカスタムメソッドの作成

投稿、タイトル、ステータスIDが異なる表があるとします。私のコントローラインデックスで

、私が持っている:

@posts = Post.all 

は、その後、私は持っている私のモデルに:

def check_status(posts) 
    posts.each do |post| 
    # logic here 
    end 
end 

だから私のコントローラで私が持っている:

@posts.check_status(@posts) 

けどI」インデックスを読み込む際に次のエラーが表示される:

undefined method check_status for <ActiveRecord::Relation:> 

アイデアはありますか?

答えて

17

それはself.で始まるクラスメソッド、次のようになります。

def self.check_status(posts) 
    posts.each do |post| 
    # logic here 
    end 
end 

次に、あなたがこのようにそれを呼び出す:

Post.check_status(@posts) 

-

ます。また、このような何かを行うことができます:

def check_status 
    # post status checking, e.g.: 
    self.status == 'published' 
end 

この場合、個のインスタンスで呼び出すことができます。

@posts = Post.all 
@post.each do |post| 
    if post.check_status 
    # do something 
    end 
end 
関連する問題