我有一个用户发布的应用程序。我有一个过滤器,它将根据通过 params[] 哈希传递的值来排序和检索不同的帖子。我不断收到明显存在的类方法的无方法错误。这是我要运行的查询(posts_controller.rb):
def room
select_filter = params[:post_filter]
course_id = params[:id].to_i
@posts = Post.where_filter(select_filter, course_id).order_filter(select_filter).page(params[:page])
end
每当 'select_filter' 的值为 3 时,我都会收到此错误:
undefined method `order_filter' for #<Array:0x007fa012d6eef8>
这是我的模型(post.rb,请记住,只要 'select_filter' 为 3,我就会收到错误消息):
def self.where_filter(select_filter, course_id_params)
case select_filter.to_i
when 1
where('course_id = ?', course_id_params)
when 2
where('course_id = ?', course_id_params)
when 3
where('course_id = ? AND created_at > ?', course_id_params.to_i, 48.hours.ago.utc.to_s(:db))
.reject! {|i| i.net_reputation <= 0 }
else
where('course_id = ?', course_id_params)
end
end
def self.order_filter(select_filter)
case select_filter.to_i
when 1
order('created_at DESC')
when 2
sort_by {|i| i.net_reputation}
when 3
sort_by {|i| i.net_reputation}
else
order('created_at DESC')
end
end
奇怪的是,如果我在控制台中运行它,一切都很好。像这样:
Post.where('course_id = ? AND created_at > ?', 10, 48.hours.ago.utc.to_s(:db)).reject {|i| i.net_reputation <= 0 }.sort_by {|i| i.net_reputation}
任何和所有输入表示赞赏。