如何在ransack上设置带有字段名称的默认条件?

2024-01-27

我有一个用户和一个角色模型,两者都通过 habtm 关联,并且有一个与角色关联的论坛模型。在论坛的搜索表单中,我想按具有特定角色(按名称:版主)的用户进行过滤。

来源看起来像这样:

class User < ActiveRecord::Base
  has_and_belongs_to_many :roles, :join_table => :users_roles
  rolify

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true

class Forum < ActiveRecord::Base
  has_many :roles, :as => :resource
  ...

<%= simple_form_for @forums, :html => { :class => 'form-horizontal' } do |f| %>
  ...
  <%= f.input :roles_users_id_in, 
              :collection => User.joins(:roles)
                                 .where(:roles => {:name => :moderator}) %>

是否可以将其组合到字段名称中,我是否需要使用自定义 preciated 设置某些内容,或者如何使用预设条件进行搜索(role.name == :moderator)?

Update

看来我必须使用自定义的掠夺者,我想出了以下内容:

class Forum < ActiveRecord::Base
  ..
  ransacker :moderator_users, :formatter => proc { |v|
    Role.joins(:users).where(:roles => { :name => :moderator, 
                                         :resource_type => :forum}, 
                             :users => {:id => v}).map(&:resource_id)
  } do |parent|
    parent.table[:id]
  end

<%= search_form_for @q, :builder => SimpleForm::FormBuilder do |f| %>

    <%= f.input :moderator_users_in, 
                :collection => User.joins(:roles)
                                   .where(:roles => {:name => :moderator}),
    ...

通过上面的解决方法,有一个论坛 SQL 查询和每个用户的查询。是否可以将其结合起来并将 sql 查询设置为如下所示:

SELECT DISTINCT `forums`.* FROM `forums` 
  LEFT OUTER JOIN `roles` ON `roles`.`resource_id` = `forums`.`id` AND 
                  `roles`.`resource_type` = 'Forum'                  
  LEFT OUTER JOIN `users_roles` ON `users_roles`.`role_id` = `roles`.`id` 
  LEFT OUTER JOIN `users` ON `users`.`id` = `users_roles`.`user_id` 
WHERE `roles`.`name` = 'responsible' AND `users`.`id` IN (1,3,6)

也可以看看:https://github.com/ernie/ransack/issues/103 https://github.com/ernie/ransack/issues/103


我不是 100% 确定我得到了这个问题,而且它有点老了,但无论如何我都会尝试一下:

因此,您有想要搜索的模型,并且有始终想要应用的条件。现在我想到的第一件事就是控制器中结果的条件,如下所示:

@q = Forum(params[:q])
@forums = @q.result.where("role_id = ?", 1) # the number of course should be the id of the moderator object

或者您可以尝试在搜索表单中使用隐藏字段:

<%= f.select(:role_name_matches, Role.pluck(:name), :as => :hidden, :input_html => { :value => "moderator" } ) %>

如果您的意思是其他意思,但仍然需要这个答案,请向我解释一下您的意思。我在搜查方面有相当多的经验,很想提供帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在ransack上设置带有字段名称的默认条件? 的相关文章

随机推荐

  • 如何从 VBA 调用 python 程序?

    正如标题所说 我有一个 python 程序 它处理我从电子邮件下载的一些数据文件 我正在编写一个vba脚本 它可以下载电子邮件附件并执行python程序来处理电子邮件附件 这样我就可以自动化我的日常工作 任何想法 一种方法是将 Python
  • 纯java sqlite库?

    I saw Java 和 SQLite https stackoverflow com questions 41233 java and sqlite 但是哪些是纯java制作的并且是平台无关的呢 另外 从哪一个开始最好 我从来没有使用过s
  • 字谜算法

    这是为文本生成字谜词的最佳方法 最多 80 个字符长度 例子 输入 狗 输出狗 dgo odg ogd gdo 神 我只是在考虑回溯解决方案 但如果文本较长 这将需要一段时间 另一个想法是我尝试字典中的所有单词 但问题并不要求真正的单词 有
  • 将 pdf 转换为矢量图像

    我正在尝试在我的网页中使用 pdf 内容 数学 我基本上想将 pdf 转换为一些矢量图像 将 pdf 转换为 swf 可以很好地完成这项工作 但由于并非每个平台都支持 flash 因此我正在尝试寻找另一种解决方案 我读过有关 svg 的内容
  • Azure DocumentDB 多租户架构

    我一直在预览期间将 DocumentDB 实现到多租户系统中 我的计划是在 DocumentDB 帐户下为每个注册的租户生成一个新数据库 大部分代码已经就位 并且测试进展非常顺利 由于 DocumentDB 已正式发布并且文档已最终确定 我
  • 使用 JavaScript 将 HTML 字符串加载到 iframe 中

    我有一串 HTML 标签 可以随时添加或更改 是否可以在运行时将该字符串加载到 Iframe 中 就好像它是 HTML 文件一样 这是针对构造 2 的 我有一个可以从 url 加载 HTML 的对象 它还可以插入 HTML 并运行脚本 但不
  • Flutter 毫不延迟地导航到屏幕

    我有一个登录屏幕 在我的表单按钮中 我进行检查 然后调用共享首选项来设置登录标志 并且 initState 我调用一个方法来检查值并重定向到主屏幕 现在一切都很顺利 但我能够看到登录表单一秒钟左右 然后我被重定向到主页 我希望根本看不到登录
  • 使用 YAML-CPP 将 YAML Emitter 内容保存到文件中

    我刚刚开始使用 yaml cpp 我设法正确构建它并运行 yaml cpp wiki 中的一些示例 但我找不到将发射器保存到文件的方法 这不可能吗 我的意思是 PyYAML 库有一个 转储 功能 yaml cpp中没有这样的功能吗 是否有一
  • Xcode 4.4 - 存在内部 API 错误

    您好 我刚刚升级到 Mountain Lion 我创建了一个空的单视图应用程序并运行它 第一次运行良好 但接下来的运行会给我 有一个内部 API错误 弹出警告两次 这与我的其他项目相同 它们一次运行正常 但在下一次运行时出现此错误 没有任何
  • PHP 会话变量足以进行用户身份验证吗?

    设想 用户登录后 将设置一个会话变量来确认其登录 在每个页面的顶部 登录会话变量被确认有效 如果不是 他们就会被踢出局 不使用持久性 cookie 仅使用session 问题 这是一个足够强大的安全措施本身 还是我应该 设置两个会话变量以验
  • 参考错误:未使用 nextjs 定义导航器

    我的代码是这样的 从 react 导入 React useEffect import alanBtn from alan ai alan sdk web const alanKey my key const App gt useEffect
  • UIScrollView 内的动态 UILabel 内容

    我有一个 UILabel 以及其他控件 存储在 UIScrollView 中 我想动态填充 UILabel 以便它自动扩展其高度以适应其内容 我只是想知道调整 UILabel 大小同时确保其父 UIScrollView 也将扩展其可滚动区域
  • Symfony2/FOSUserBundle - 多个捆绑包的路由问题

    如同this https stackoverflow com q 9826370 399584问题 我需要为我的网站的管理和前端包单独登录 管理实际上是一个单独的包 位于vendors 现在 我的路由如下所示 应用程序 配置 路由 yml
  • MVVMCross Binding 导致 Android 应用程序崩溃

    我有一个基于 Xamarin 和 MvvmCross 的 Android 应用程序 在该应用程序中 有一个带有我自己创建的 ExpandableListView 的视图 现在 此列表显示几个项目 这些项目使用 MvvmCross 绑定到其
  • 无法在 SQL Server 中的 ROW_NUMBER() 中使用别名?

    使用 sql 时 我必须创建一个按分组总和排序的 row number 列 select Sales Name SUM Sales Bill as billsum ROW NUMBER over order by billsum DESC
  • 如何建立简单的评审和5星评级系统? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对网络技术非常陌生 这基本上是我的团队正在研究的一个学期项目 我们正在开发一个食品评论网站 到目前为止 我不太确定如何实现一个简单的
  • 如何使用最新的 java sdk 3.1.2 在 couchbase 中执行批量插入

    我能够使用旧版本的 java sdk 例如 2 9 7 使用以下代码执行批量插入 public void insertAll 集合文档 Observable from documents flatMap new Func1
  • Django Rest Framework,超链接嵌套关系

    我有两个模型 User and Ticket Ticket有一个User User有很多Tickets 当我访问 url 时我已经完成了 用户 1 门票 我正在获取用户的门票列表 我想使用超链接关系 这是我在用户模型表示中看到的内容 tic
  • 将超级对撞机与 python 结合使用

    我想做一些实时声音处理 我听说超级对撞机 http supercollider sourceforge net 它看起来很棒 但我想坚持使用 python 因为 正常 编程是问题所在 有没有办法将 python 脚本作为模块加载到超级对撞机
  • 如何在ransack上设置带有字段名称的默认条件?

    我有一个用户和一个角色模型 两者都通过 habtm 关联 并且有一个与角色关联的论坛模型 在论坛的搜索表单中 我想按具有特定角色 按名称 版主 的用户进行过滤 来源看起来像这样 class User lt ActiveRecord Base