Search code examples
ruby-on-railspostgresqlacts-as-audited

LIKE in .where with audited gem


I would like find audited changes of state but i dont know who find audited changes from any states

I try this and its work but i would like find last audited change from any states to offboarded:

product.audits.where("audited_changes LIKE '%state:%published%offboarded%'").last

I would like something like this: LIKE '%state:%ANY WORD%offboarded%'

audited change format:

audited_changes: {"state"=>["published", "offboarded"]}

I want find this result too for example:

audited_changes: {"state"=>["hidden", "offboarded"]}

I use Rails with postgresql


Solution

  • I think you can use the @> operator ("contains" operator) in your where clause:

    product.audits.where("audited_changes @> '{\"state\": [\"published\", \"offboarded\"]}'")
    

    Docs for different data types: