복붙노트

[RUBY-ON-RAILS] 어떻게 첫 번째 모델에 속하는 다른 모델의 특성을 기반으로 모델을 쿼리하는?

RUBY-ON-RAILS

어떻게 첫 번째 모델에 속하는 다른 모델의 특성을 기반으로 모델을 쿼리하는?

나는 모든 사람에 대한 쿼리 수있는 방법을 각 차량 형 자동차 또는 오토바이 될 수 has_many 차량 및 모델 사람을, 오토바이가 자동차와 모든 사람을 가지고있는 사람이 있다면?

나는이 올바른 생각하지 않는다 :

Person.joins(:vehicles).where(vehicle_type: 'auto')
Person.joins(:vehicles).where(vehicle_type: 'motorcycle')

해결법

  1. ==============================

    1.당신은 다음과 같이 할 수 있습니다 :

    당신은 다음과 같이 할 수 있습니다 :

    Person.includes(:vehicles).where(vehicles: { type: 'auto' })
    Person.includes(:vehicles).where(vehicles: { type: 'motorcycle' })
    

    .joins 및 .includes에주의 :

    # consider these models
    Post # table name is posts
      belongs_to :user
                    #^^
    User # table name is users
      has_many :posts
                   #^
    
    # the `includes/joins` methods use the relation name defined in the model:
    User.includes(:posts).where(posts: { title: 'Bobby Table' })
                      #^            ^
    # but the `where` uses the exact table name:
    Post.includes(:user).where(users: { name: 'Bobby' })
                    #^^^           ^
    

    까다로운 일 :

    Post
      belongs_to :author, class_name: 'User'
    User # table named users
      has_many :posts
    
    Post.includes(:author).where(users: { name: 'John' })
    # because table is named users
    

    유제:

  2. from https://stackoverflow.com/questions/23633301/how-to-query-a-model-based-on-attribute-of-another-model-which-belongs-to-the-fi by cc-by-sa and MIT license