我正试图想出一个很好的方法来解决这个问题。
假设我有一个包含帖子,标题和不同状态ID的表格。
在我的控制器索引中,我有:
@posts = Post.all
然后在我的模型中我有:
def check_status(posts)
posts.each do |post|
# logic here
end
end
所以在我的控制器里我有:
@posts.check_status(@posts)
但加载索引时出现以下错误:
undefined method check_status for <ActiveRecord::Relation:>
有什么想法吗?
答案 0 :(得分:19)
它应该是一个类方法,前缀为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
然后你可以在个别的Post
个实例上调用它:
@posts = Post.all
@post.each do |post|
if post.check_status
# do something
end
end