[Rails]ransack에서 관련 모델 (부모 및 자식)의 열을 넘어서 검색하는 방법
실현하고 싶은 것
하나의 모델과 관련 (중첩)하는 모델의 열까지 검색 대상으로 만들고 싶습니다.
구체적으로는, 헌옷 가게의 점포명 뿐만이 아니라, 에리어명(1대다)이나 취급 브랜드명(다대다)까지 포함해 일괄 검색하고 싶다.
결론
양식 태그의 요소 이름에 関連するモデル名_関連するモデルのカラム名
관련 모델은 대 1 (belongs_to: hoge, 또는 has_one: fuga)
예를 들어, shop 모델에 묶는 area 모델의 영역 이름 (name)을 검색 조건으로 만들고 싶을 때= f.フォームヘルパー :要素名
의 要素名
를 area_name_cont
로 한다.
분해하면
area → 관련 모델명
name → 관련 모델의 열 이름
cont → 부분 일치를 지정하는 술어
됩니다.
= search_form_for(@q, url: shop_search_path) do |f|
= f.text_field :area_name_cont
# shopモデルに紐づくareaモデルの、エリア名(name)
관련 모델이 대다(has_many: hoges 등)
예를 들면, shop 모델에 묶는 brands 모델의 브랜드명(name)을 검색 조건으로 하고 싶을 때= f.フォームヘルパー :要素名
의 要素名
를 brands_name_cont
로 한다.
분해하면
brands → 관련 모델명 ※shop has_many: brands이므로 복수형
name → 관련 모델의 열 이름
cont → 부분 일치를 지정하는 술어
됩니다.
= search_form_for(@q, url: shop_search_path) do |f|
= f.text_field :brands_name_or_genres_name_cont
# shopモデルに紐づくbrandモデルの、ブランド名(name)
# shopモデルに紐づくgenreモデルの、ジャンル名(name)
# ※紐づくモデルが複数の時は、モデル名が複数形になることに注意
덧붙여서, _or_
등으로 컬럼명을 연결하면, 복수컬럼을 검색 대상으로 할 수 있습니다.
실제의 ransack의 사용법 등에 대해서는 [Rails]ransack을 이용한 다양한 검색 폼 작성 방법 정리 등의 기사를 참고해 주세요.
모델 간의 연관
※관련되는 개소만 기재
shop.rb# shopモデル
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# areaモデル
has_many :shops
brand.rb# brandモデル
has_many :shop_brands
has_many :shops, through: :shop_brands
shop_brand.rb# shop_brandモデル
belongs_to :shop
belongs_to :brand
shop_genre.rb# shop_genreモデル
belongs_to :shop
belongs_to :genre
관련을 조사하는 방법
ransackable_associations
라는 메소드를 사용하면 편리합니다.
1. 애플리케이션 디렉토리에서 rails c
terminal# 該当のアプリケーションディレクトリで実行
$ rails c
Running via Spring preloader in process 61541
Loading development environment (Rails 5.0.7.2)
[1] pry(main)>
2. モデル名.ransackable_associations
실행
terminal# 今回はShopモデルとの関連を調べたいので、Shop.ransackable_associationsとすると
Shopモデルに紐づくモデルが表示される
[1] pry(main)> Shop.ransackable_associations
=> ["user", "area", "shop_genres", "shop_brands", "genres", "brands"]
[2] pry(main)>
참고
Ransack으로 쉽게 검색 양식 만들기 73 레시피 -026 관련
Ransack에서 상위 또는 하위 테이블의 열에서 여러 검색하는 방법
Reference
이 문제에 관하여([Rails]ransack에서 관련 모델 (부모 및 자식)의 열을 넘어서 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sew_sou19/items/520d4348b2eaa7bf792c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
양식 태그의 요소 이름에
関連するモデル名_関連するモデルのカラム名
관련 모델은 대 1 (belongs_to: hoge, 또는 has_one: fuga)
예를 들어, shop 모델에 묶는 area 모델의 영역 이름 (name)을 검색 조건으로 만들고 싶을 때
= f.フォームヘルパー :要素名
의 要素名
를 area_name_cont
로 한다.분해하면
area → 관련 모델명
name → 관련 모델의 열 이름
cont → 부분 일치를 지정하는 술어
됩니다.
= search_form_for(@q, url: shop_search_path) do |f|
= f.text_field :area_name_cont
# shopモデルに紐づくareaモデルの、エリア名(name)
관련 모델이 대다(has_many: hoges 등)
예를 들면, shop 모델에 묶는 brands 모델의 브랜드명(name)을 검색 조건으로 하고 싶을 때
= f.フォームヘルパー :要素名
의 要素名
를 brands_name_cont
로 한다.분해하면
brands → 관련 모델명 ※shop has_many: brands이므로 복수형
name → 관련 모델의 열 이름
cont → 부분 일치를 지정하는 술어
됩니다.
= search_form_for(@q, url: shop_search_path) do |f|
= f.text_field :brands_name_or_genres_name_cont
# shopモデルに紐づくbrandモデルの、ブランド名(name)
# shopモデルに紐づくgenreモデルの、ジャンル名(name)
# ※紐づくモデルが複数の時は、モデル名が複数形になることに注意
덧붙여서,
_or_
등으로 컬럼명을 연결하면, 복수컬럼을 검색 대상으로 할 수 있습니다.실제의 ransack의 사용법 등에 대해서는 [Rails]ransack을 이용한 다양한 검색 폼 작성 방법 정리 등의 기사를 참고해 주세요.
모델 간의 연관
※관련되는 개소만 기재
shop.rb# shopモデル
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# areaモデル
has_many :shops
brand.rb# brandモデル
has_many :shop_brands
has_many :shops, through: :shop_brands
shop_brand.rb# shop_brandモデル
belongs_to :shop
belongs_to :brand
shop_genre.rb# shop_genreモデル
belongs_to :shop
belongs_to :genre
관련을 조사하는 방법
ransackable_associations
라는 메소드를 사용하면 편리합니다.
1. 애플리케이션 디렉토리에서 rails c
terminal# 該当のアプリケーションディレクトリで実行
$ rails c
Running via Spring preloader in process 61541
Loading development environment (Rails 5.0.7.2)
[1] pry(main)>
2. モデル名.ransackable_associations
실행
terminal# 今回はShopモデルとの関連を調べたいので、Shop.ransackable_associationsとすると
Shopモデルに紐づくモデルが表示される
[1] pry(main)> Shop.ransackable_associations
=> ["user", "area", "shop_genres", "shop_brands", "genres", "brands"]
[2] pry(main)>
참고
Ransack으로 쉽게 검색 양식 만들기 73 레시피 -026 관련
Ransack에서 상위 또는 하위 테이블의 열에서 여러 검색하는 방법
Reference
이 문제에 관하여([Rails]ransack에서 관련 모델 (부모 및 자식)의 열을 넘어서 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sew_sou19/items/520d4348b2eaa7bf792c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# shopモデル
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モデル
has_many :shops
# brandモデル
has_many :shop_brands
has_many :shops, through: :shop_brands
# shop_brandモデル
belongs_to :shop
belongs_to :brand
# shop_genreモデル
belongs_to :shop
belongs_to :genre
ransackable_associations
라는 메소드를 사용하면 편리합니다.1. 애플리케이션 디렉토리에서 rails c
terminal
# 該当のアプリケーションディレクトリで実行
$ rails c
Running via Spring preloader in process 61541
Loading development environment (Rails 5.0.7.2)
[1] pry(main)>
2.
モデル名.ransackable_associations
실행terminal
# 今回はShopモデルとの関連を調べたいので、Shop.ransackable_associationsとすると
Shopモデルに紐づくモデルが表示される
[1] pry(main)> Shop.ransackable_associations
=> ["user", "area", "shop_genres", "shop_brands", "genres", "brands"]
[2] pry(main)>
참고
Ransack으로 쉽게 검색 양식 만들기 73 레시피 -026 관련
Ransack에서 상위 또는 하위 테이블의 열에서 여러 검색하는 방법
Reference
이 문제에 관하여([Rails]ransack에서 관련 모델 (부모 및 자식)의 열을 넘어서 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sew_sou19/items/520d4348b2eaa7bf792c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Rails]ransack에서 관련 모델 (부모 및 자식)의 열을 넘어서 검색하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sew_sou19/items/520d4348b2eaa7bf792c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)