I'm using rails 7 and ruby 3.1.2.
My cookie I've created returns these keys and values:
>> cookies[:utm_params]
=> "{:source=>\"facebook\", :medium=>\"facebook_feed\", :campaign=>\"123123123123\", :max_age=>2592000}"
And I've created these fields on my Subscription model:
# utm_source :string
# utm_medium :string
# utm_campaign :string
My Subscription.create code looks like this atm, but I can't figure out how to save them.
@subscription = Subscription.create!({
utm_source: cookies[:utm_params][:source],
# utm_medium: cookies[:utm_params],
# utm_campaign: cookies[:utm_params],
})
EDIT: My own solution and refactor
application_controller.rb
UTM_COOKIE_NAME = "_ta_utm"
before_action :capture_utm_params
private
def capture_utm_params
if(params.has_key?(:utm_medium))
cookies[UTM_COOKIE_NAME] = {
expires: 30.days.from_now,
value: {
source: params[:utm_source],
medium: params[:utm_medium],
campaign: params[:utm_campaign]
}.to_json
}
end
end
checkout_controller.rb
utm_tags = JSON.parse(cookies[UTM_COOKIE_NAME]) rescue nil
if utm_tags.present?
source = utm_tags["source"]
medium = utm_tags["medium"]
campaign = utm_tags["campaign"]
end
@subscription = Subscription.create!({
utm_source: source,
utm_medium: medium,
utm_campaign: campaign
})