2016-08-08 4 views
1

私は配列を格納しているJSONデータ型のテーブルに列を持っています。JSONデータ型の中で配列をクエリするRailsの方法

移行

class AddEditSummaryToPosts < ActiveRecord::Migration 
    def change 
    add_column :posts, :edit_summary, :json 
    end 
end 

ポスト

class Post < ActiveRecord::Base 
    serialize :edit_summary, JSON 
end 

これは、データが格納されている方法です。

:id => 2, 
:edit_summary => [ 
    { 
    "user_id" => 56, 
    "date" => "2016-08-09T07:46:04.555-04:00" 
    }, 
    { 
    "user_id" => 57, 
    "date" => "2016-08-08T06:35:44.345-04:00" 
    }, 
] 

私はthisポストを呼ばれ、QUEを書きましたうまく動作しているry

SELECT * 
FROM posts, json_array_elements(edit_summary) as elem 
WHERE elem->>'date' BETWEEN '2016-08-07 00:00:00' AND '2016-08-10 23:59:59'; 

私の質問は同じレール方法を行う方法はありますか?

答えて

0

生のSQL条件を提供することによって、Railsで同じクエリを実行できます。

しかし、私は編集要約が別の関係に属しているように感じます。

Posthas_manyEditSummary、メリット:

  • あなたは、インデックスの日付とFKのにできるようになります。
  • DBの整合性(何もないので、user_idは無効なIDになります)。
  • 分離
  • DB検証
関連する問題