[RUBY] [Rails] Comment rechercher dans les colonnes de modèles associés (parents et enfants) dans Ransack

Ce que vous voulez réaliser

Je veux rechercher même les colonnes du modèle liées (imbriquées) à un modèle

Plus précisément, je voudrais rechercher non seulement le nom du magasin de vêtements d'occasion, mais également le nom de la zone (un-à-plusieurs) et le nom de la marque (plusieurs-à-plusieurs).

スクリーンショット 2020-07-11 17.45.47.png

Conclusion

** Spécifiez nom de modèle associé_ nom de colonne de modèle lié comme nom d'élément de la balise de formulaire **

Le modèle associé est to 1 (appartient_to: hoge, et has_one: fuga)

Par exemple, lorsque vous souhaitez utiliser le nom de zone du modèle de zone associé au modèle de magasin comme condition de recherche. = f. Aide de formulaire: Soit nom de l'élément du nom de l'élément ʻarea_name_cont`.

Une fois démonté zone → Nom du modèle associé name → Nom de colonne du modèle associé cont → Prédicat qui spécifie une correspondance partielle

Ce sera.

= search_form_for(@q, url: shop_search_path) do |f|
  = f.text_field :area_name_cont
  #Nom de zone du modèle de zone associé au modèle de magasin(name)

Les modèles associés sont trop nombreux (has_many: hoges, etc.)

Par exemple, lorsque vous souhaitez utiliser le nom de marque du modèle de marques associé au modèle de boutique comme condition de recherche. = f. Aide de formulaire: Soit nom d'élément du nom d'élément`` nom_marques_cont.

Une fois démonté marques → nom du modèle associé name → Nom de colonne du modèle associé cont → Prédicat qui spécifie une correspondance partielle

Ce sera.

= search_form_for(@q, url: shop_search_path) do |f|
  = f.text_field :brands_name_or_genres_name_cont
  #Nom de marque du modèle de marque associé au modèle de boutique(name)
  #Nom de genre du modèle de genre associé au modèle de boutique(name)
  #* Notez que lorsqu'il y a plusieurs modèles liés, le nom du modèle sera au pluriel.

À propos, vous pouvez rechercher plusieurs colonnes en connectant les noms de colonnes avec _or_ etc.

Pour l'utilisation réelle de ransack, veuillez vous référer à des articles tels que [Rails] Résumé des différentes méthodes de création de formulaire de recherche utilisant ransack.

Association entre modèles

スクリーンショット 2020-07-11 18.17.14.png

shop.rb


#modèle de magasin
  belongs_to :area, optional: true
  has_many :shop_genres
  has_many :shop_brands
  has_many :genres, through: :shop_genres
  has_many :brands, through: :shop_brands

area.rb


#modèle de zone
  has_many :shops

brand.rb


#Modèle de marque
  has_many :shop_brands
  has_many :shops, through: :shop_brands

shop_brand.rb


# shop_Modèle de marque
  belongs_to :shop
  belongs_to :brand

shop_genre.rb


# shop_modèle de genre
  belongs_to :shop
  belongs_to :genre

Comment découvrir l'association

Il est pratique d'utiliser une méthode appelée ransackable_associations.

** 1. rails c ** dans le répertoire de l'application

terminal


#Exécutez dans le répertoire d'application approprié

$ rails c
Running via Spring preloader in process 61541
Loading development environment (Rails 5.0.7.2)
[1] pry(main)> 

** 2. Exécutez model name.ransackable_associations **

terminal


#Cette fois, je veux étudier la relation avec le modèle Shop, donc Shop.ransackable_Si vous dites associations
Le modèle associé au modèle Shop s'affiche
[1] pry(main)> Shop.ransackable_associations
=> ["user", "area", "shop_genres", "shop_brands", "genres", "brands"]
[2] pry(main)> 

référence

[73 recettes pour créer facilement un formulaire de recherche avec Ransack -026 associé](http://nekorails.hatenablog.com/entry/2017/05/31/173925#026-%E9%96%A2%E9%80% A3) Comment rechercher plusieurs colonnes dans les tables parent et enfant avec Ransack

Recommended Posts

[Rails] Comment rechercher dans les colonnes de modèles associés (parents et enfants) dans Ransack
[rails] Comment afficher les informations parent dans la vue enfant dans des relations imbriquées
[Rails] Comment utiliser les boîtes de sélection dans Ransack
Comment utiliser JQuery dans Rails 6 js.erb
Comment écrire une recherche de comparaison de dates dans Rails
[Webpacker] Résumé de l'installation de Bootstrap et jQuery dans Rails 6.0
Comment supprimer de grandes quantités de données dans Rails et problèmes
Comment installer jQuery dans Rails 6
Comment installer Swiper in Rails
[Rails] Je souhaite envoyer des données de différents modèles dans un formulaire
Comment changer le nom de l'application dans les rails
Comment insérer une vidéo dans Rails
Comment utiliser MySQL dans le didacticiel Rails
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
[rails] Comment configurer le routage dans les ressources
Comment implémenter la fonctionnalité de classement dans Rails
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
graphql-ruby: Comment obtenir le nom de la requête ou de la mutation dans le contrôleur Remarque
Comment créer une combinaison unique de données dans la table intermédiaire des rails
Résumé de la sélection des éléments dans Selenium
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
Comment traduire Rails en japonais en général
[Rails] Comment implémenter un test unitaire d'un modèle
Comment séparer .scss par contrôleur dans Rails
Comment ajouter conditionnellement une classe html.erb dans Rails
Comment créer une condition de recherche impliquant plusieurs modèles
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment vérifier les commandes Rails dans le terminal
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
[Rails] Comment afficher les prévisions météo de l'adresse enregistrée en japonais en utilisant OpenWeatherMap
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
Comment implémenter la connexion invité en 5 minutes sur le portefeuille de rails
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
[Ruby on Rails] Comment écrire enum en japonais
[Rails, JS] Comment implémenter l'affichage asynchrone des commentaires
[Rails] Comment changer le nom de colonne de la table
[Ruby On Rails] Comment réinitialiser DB dans Heroku
[Comment insérer une vidéo dans un hameau avec Rails]
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment interroger Array dans jsonb avec Rails + postgres
[Rails 6] Comment définir une image d'arrière-plan dans Rails [CSS]
[Rails] Comment obtenir le contenu des paramètres forts
Résumé de la mise en œuvre des arguments par défaut en Java
[Rails] Comment charger JavaScript dans une vue spécifique
(Ruby on Rails6) Comment créer un modèle et une table