ruby-on-rails – 如何在Rails 3中使用带Ransack的范围?
发布时间:2020-12-17 03:35:29 所属栏目:百科 来源:网络整理
导读:在我的Widget模型中,我有以下内容: scope :accessible_to,lambda { |user| if user.has_role?('admin') self.all else roles = user.roles role_ids = [] roles.each { |r| role_ids r.id } self.joins(:widget_assignments).where('widget_assignments.rol
在我的Widget模型中,我有以下内容:
scope :accessible_to,lambda { |user| if user.has_role?('admin') self.all else roles = user.roles role_ids = [] roles.each { |r| role_ids << r.id } self.joins(:widget_assignments).where('widget_assignments.role_id' => role_ids) end } 理想情况下,我想使用此范围作为Ransack搜索结果的过滤器,因此在我的控制器中我有: def index @q = Widget.accessible_to(current_user).search(params[:q]) @widgets = @q.result.order('created_at DESC') end 这样做会产生以下错误:
我猜Ransack正在寻找一个ActiveRecord关系对象,而不是一个数组.无论如何,我可以使用我的范围作为Ransack的过滤器吗? 解决方法
为self.scoped更改self.all. all返回一个数组.
Rails 4的更新:现在所有人都将返回一个范围. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |