1
0
Fork 0
mirror of https://github.com/activerecord-hackery/ransack.git synced 2022-11-09 13:47:45 -05:00
activerecord-hackery--ransack/going-further/associations/index.html
2022-05-24 07:57:14 +00:00

21 lines
No EOL
36 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-going-further/associations">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-beta.20">
<link rel="alternate" type="application/rss+xml" href="/ransack/blog/rss.xml" title="Ransack documentation RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/ransack/blog/atom.xml" title="Ransack documentation Atom Feed"><title data-rh="true">Associations | Ransack documentation</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://activerecord-hackery.github.io/ransack/going-further/associations/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Associations | Ransack documentation"><meta data-rh="true" name="description" content="Associations"><meta data-rh="true" property="og:description" content="Associations"><link data-rh="true" rel="icon" href="/ransack/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://activerecord-hackery.github.io/ransack/going-further/associations/"><link data-rh="true" rel="alternate" href="https://activerecord-hackery.github.io/ransack/going-further/associations/" hreflang="en"><link data-rh="true" rel="alternate" href="https://activerecord-hackery.github.io/ransack/going-further/associations/" hreflang="x-default"><link rel="stylesheet" href="/ransack/assets/css/styles.3c901051.css">
<link rel="preload" href="/ransack/assets/js/runtime~main.6cd9099a.js" as="script">
<link rel="preload" href="/ransack/assets/js/main.e3dea875.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/ransack/"><div class="navbar__logo"><img src="/ransack/./logo/ransack-h.png" alt="Ransack Logo" class="themedImage_W2Cr themedImage--light_TfLj"><img src="/ransack/./logo/ransack-h.png" alt="Ransack Logo" class="themedImage_W2Cr themedImage--dark_oUvU"></div></a><a class="navbar__item navbar__link navbar__link--active" href="/ransack/">Documentation</a><a class="navbar__item navbar__link" href="/ransack/blog/">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/activerecord-hackery/ransack" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_S7eR colorModeToggle_vKtC"><button class="clean-btn toggleButton_rCf9 toggleButtonDisabled_Pu9x" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_v35p"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_nQuB"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_dLyj"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div><div class="searchHintContainer_Pkmr"><kbd class="searchHint_iIMx">ctrl</kbd><kbd class="searchHint_iIMx">K</kbd></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper docsWrapper_mKqt"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_RiI4" type="button"></button><div class="docPage_ualW"><aside class="theme-doc-sidebar-container docSidebarContainer_UQUJ"><div class="sidebar_RiAD"><nav class="menu thin-scrollbar menu_izAj"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ransack/">Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/ransack/getting-started/simple-mode/">Getting started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/ransack/going-further/associations/">Going further</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/ransack/going-further/associations/">Associations</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/custom-predicates/">Custom predicates</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/exporting-to-csv/">CSV Export</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/i18n/">i18n</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/form-customisation/">Form customisation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/merging-searches/">Merging searches</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/ransackers/">Ransackers</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/saving-queries/">Saving queries</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/other-notes/">Other notes</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/searching-postgres/">Postgres searches</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/external-guides/">External resources</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/documentation/">Documentation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/release_process/">Versions and Releases</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/acts-as-taggable-on/">Acts-as-taggable-on</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/polymorphic-search/">Polymorphic Searches</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ransack/going-further/wiki-contributors/">Wiki Contributors</a></li></ul></li></ul></nav></div></aside><main class="docMainContainer_uL0j"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_DM6M"><div class="docItemContainer_vinB"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Xlws" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/ransack/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_kU5B"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Going further</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Associations</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_bZGK theme-doc-toc-mobile tocMobile_TmEX"><button type="button" class="clean-btn tocCollapsibleButton_l22C">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Associations</h1></header><h3 class="anchor anchorWithStickyNavbar_mojV" id="associations">Associations<a class="hash-link" href="#associations" title="Direct link to heading"></a></h3><p>You can easily use Ransack to search for objects in <code>has_many</code> and <code>belongs_to</code>
associations.</p><p>Given these associations...</p><div class="language-ruby codeBlockContainer_MPoW theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_B9tL"><pre tabindex="0" class="prism-code language-ruby codeBlock__0OG thin-scrollbar"><code class="codeBlockLines_gEuF"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Employee</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> ActiveRecord</span><span class="token double-colon punctuation" style="color:#393A34">::</span><span class="token plain">Base</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> belongs_to </span><span class="token symbol" style="color:#36acaa">:supervisor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># has attributes first_name:string and last_name:string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">end</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Department</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> ActiveRecord</span><span class="token double-colon punctuation" style="color:#393A34">::</span><span class="token plain">Base</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> has_many </span><span class="token symbol" style="color:#36acaa">:supervisors</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># has attribute title:string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">end</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Supervisor</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> ActiveRecord</span><span class="token double-colon punctuation" style="color:#393A34">::</span><span class="token plain">Base</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> belongs_to </span><span class="token symbol" style="color:#36acaa">:department</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> has_many </span><span class="token symbol" style="color:#36acaa">:employees</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># has attribute last_name:string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">end</span><br></span></code></pre><div class="buttonGroup_hRr1"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_W9eQ" aria-hidden="true"><svg class="copyButtonIcon_XEyF" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_i9w9" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>... and a controller...</p><div class="language-ruby codeBlockContainer_MPoW theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_B9tL"><pre tabindex="0" class="prism-code language-ruby codeBlock__0OG thin-scrollbar"><code class="codeBlockLines_gEuF"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">SupervisorsController</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> ApplicationController</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token method-definition function" style="color:#d73a49">index</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@q</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Supervisor</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ransack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">params</span><span class="token punctuation" style="color:#393A34">[</span><span class="token symbol" style="color:#36acaa">:q</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@supervisors</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@q</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token symbol" style="color:#36acaa">:department</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token symbol" style="color:#36acaa">:employees</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">end</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">end</span><br></span></code></pre><div class="buttonGroup_hRr1"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_W9eQ" aria-hidden="true"><svg class="copyButtonIcon_XEyF" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_i9w9" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>... you might set up your form like this...</p><div class="language-erb codeBlockContainer_MPoW theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_B9tL"><pre tabindex="0" class="prism-code language-erb codeBlock__0OG thin-scrollbar"><code class="codeBlockLines_gEuF"><span class="token-line" style="color:#393A34"><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> search_form_for </span><span class="token erb language-erb ruby language-ruby variable" style="color:#36acaa">@q</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby keyword" style="color:#00009f">do</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby operator" style="color:#393A34">|</span><span class="token erb language-erb ruby language-ruby">f</span><span class="token erb language-erb ruby language-ruby operator" style="color:#393A34">|</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">label </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:last_name_cont</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">search_field </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:last_name_cont</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">label </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:department_title_cont</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">search_field </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:department_title_cont</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">label </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:employees_first_name_or_employees_last_name_cont</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">search_field </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:employees_first_name_or_employees_last_name_cont</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> f</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">.</span><span class="token erb language-erb ruby language-ruby">submit </span><span class="token erb language-erb ruby language-ruby string-literal string" style="color:#e3116c">&quot;search&quot;</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby keyword" style="color:#00009f">end</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> content_tag </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:table</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby keyword" style="color:#00009f">do</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> content_tag </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:th</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">,</span><span class="token erb language-erb ruby language-ruby"> sort_link</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">(</span><span class="token erb language-erb ruby language-ruby variable" style="color:#36acaa">@q</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">,</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:last_name</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">)</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> content_tag </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:th</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">,</span><span class="token erb language-erb ruby language-ruby"> sort_link</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">(</span><span class="token erb language-erb ruby language-ruby variable" style="color:#36acaa">@q</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">,</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:department_title</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">)</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%=</span><span class="token erb language-erb ruby language-ruby"> content_tag </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:th</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">,</span><span class="token erb language-erb ruby language-ruby"> sort_link</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">(</span><span class="token erb language-erb ruby language-ruby variable" style="color:#36acaa">@q</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">,</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby symbol" style="color:#36acaa">:employees_last_name</span><span class="token erb language-erb ruby language-ruby punctuation" style="color:#393A34">)</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">&lt;%</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb ruby language-ruby keyword" style="color:#00009f">end</span><span class="token erb language-erb ruby language-ruby"> </span><span class="token erb language-erb delimiter punctuation" style="color:#393A34">%&gt;</span><br></span></code></pre><div class="buttonGroup_hRr1"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_W9eQ" aria-hidden="true"><svg class="copyButtonIcon_XEyF" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_i9w9" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If you have trouble sorting on associations, try using an SQL string with the
pluralized table (<code>&#x27;departments.title&#x27;</code>,<code>&#x27;employees.last_name&#x27;</code>) instead of the
symbolized association (<code>:department_title)</code>, <code>:employees_last_name</code>).</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/activerecord-hackery/ransack/edit/main/docs/docs/going-further/associations.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_dcUD" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_foO9"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/ransack/getting-started/using-predicates/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Using Predicates</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/ransack/going-further/custom-predicates/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Custom predicates</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_cNA8 thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#associations" class="table-of-contents__link toc-highlight">Associations</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/ransack/">Documentation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/ransack" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/ransack/blog/">Blog</a></li><li class="footer__item"><a href="https://github.com/activerecord-hackery/ransack" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div></div></footer></div>
<script src="/ransack/assets/js/runtime~main.6cd9099a.js"></script>
<script src="/ransack/assets/js/main.e3dea875.js"></script>
</body>
</html>