settings
속성의 JSON 필드 search_terms
이 업데이트 된 후에 만 레일에서 메소드를 실행하려고합니다.레일스 - 특정 속성의 JSON 필드가 업데이트 된 후에 만 메소드가 실행됩니다.
모델의 이름은 Campaign
이며,이 인스턴스의 속성의 예는 다음과 같습니다 캠페인 모델 자체에서
Campaign.first.attributes
=> {
"id" => 1,
"name" => "example.com",
"status" => "on",
"languages" => [],
"country" => nil,
"settings" => {
"search_terms" => {
"happy" => true,
"sad" => true,
"excited" => true
},
"keyword_refresh_intervals" => {
"en-us" => 60,
"ru-ru" => "0",
"en-gb" => "0"
}
},
"advertiser_id" => 1,
"created_at" => Sun, 25 Dec 2016 10:55:47 UTC +00:00,
"updated_at" => Tue, 28 Feb 2017 08:07:05 UTC +00:00
}
내가 만든 커밋 후 필요한 작업을 실행 해요 :
class Campaign < ApplicationRecord
after_commit -> { PlacementsGeneratorJob.perform_later }
을
하지만 settings
속성에서 값이 변경된 후에 만 속성을 변경하고 settings
속성을 변경하지 않은 경우에만 실행되기를 원합니다.
그게 가능합니까?
편집 :이
그래서 예를 들어 나는 settings
속성 변경 사항을 확인할 수 있습니다
Campaign.first.settings_changed?
=> true
그러나 나는 같은 것을 수행 할 수 없습니다
Campaign.first.settings["search_terms"]_changed?
SyntaxError: unexpected tFID, expecting end-of-input
나를 위해 작동하지 않습니다. 몇 시간 만에 알아 내려고 노력했습니다. – Tom