2017-03-17 10 views
1

私のレールアプリでは、Organizationsと関連する投稿はOrganizationに属しています。 Organizationモデルにはタイプ属性ieがあります。 enum :GOV、:EDU、:私はOrganization.edu.includes(:posts)Rails:特定のenum属性を持つカテゴリに属している関連レコードを取得する

での投稿を取得することができます

Organization.edu 

で型EDUの組織のリストを取得することができますなど

enum sp_type: { gov: 0, edu: 1, sports: 2 } 

スポーツは私が取得したいですsp_type eduの組織に所属するすべての投稿、すべての投稿のリストを取得するためにどのようなクエリを実行する必要がありますか?updated_at

答えて

1
  1. typeがSTIに使用されているため、列名として使用することはあまり推奨されません。
  2. クエリ(組織を得るために):

    Organization.where(sp_type: Organization.sp_types[:edu])) 
          .includes(:posts) 
          .where.not(posts: { id: nil }) 
          .order('posts.updated_at') 
    
  3. 投稿を取得するクエリ:

    Post.joins(:organization) 
        .where(organizations: { sp_type: Organization.sp_types[:edu]}) 
        .group('posts.id') 
        .order('posts.updated_at') 
    
+0

タイプはSTIのために使用されているので、私は、sp_type属性を使用しています。編集された質問。 – StarWars

+0

@StarWars編集 –

+0

私は整数値を追加する必要があります。 'sp_type::edu'ではなく' sp_type:1'がこれを行う正しい方法です。私は投稿を取得することができます。 – StarWars

関連する問題