2017-04-14 146 views
0

我正在使用審計的gem來跟蹤對記錄的更改。審計對象看起來像根據經過審計的更改過濾出審計結果,並使用受審計的審計列表gem

id: 1, 
    auditable_id: 1, 
    auditable_type: "Customer", 
    associated_id: nil, 
    associated_type: nil, 
    user_id: nil, 
    user_type: nil, 
    username: nil, 
    action: "create", 
    audited_changes: 
    {"first_name"=>"Milan McClure", 
    "last_name"=>"Wilfred Carter IV", 
    "email"=>"[email protected]", 
    "sms_optin"=>true, 
    "title"=>nil, 
    "is_deleted"=>false, 
    "deleted_at"=>nil, 
    "restored_at"=>nil}, 
    version: 1, 
    comment: nil, 
    remote_address: nil, 
    request_uuid: "6e462bf8-4788-4ec5-a6ee-f31a7a8226d0", 
    created_at: Wed, 12 Apr 2017 12:20:39 UTC +00:00>, 

等等。現在,我只想過濾掉那些審計對象中的散列audit.audited_changes包含名字更改的審計。我如何查詢這一個?

回答

0

如果你正在使用PostgreSQL和本audited_changes可以設置爲json的類型,然後查詢可以是火象

審計:: Audit.where(「(audited_changes - > 'FIRST_NAME')不爲null,auditable_type ?= 「 」消費者「)#類型消費者的所有記錄

或特定對象 審計:: Audit.where(」(audited_changes - > 'FIRST_NAME')不爲null,auditable_type = ?AND auditable_id =?「,」Consumer「,」#{consumer_id}「)#對於消費者類型的所有記錄

因爲無論何時審計對象被創建,audited_changes只有在創建/更新時更改過的那些密鑰。

+0

嘿,這似乎並沒有工作。它只是返回一個活躍的記錄關係..我使用postgress –

+0

你是否已經將列類型更改爲json,因爲它對我來說是工作http://stackoverflow.com/questions/23911740/get-records-where-json-column-key -一片空白 –