You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7中如何将Cookie哈希键值保存到数据库独立字段?

问题描述

我使用Rails 7和Ruby 3.1.2,创建的Cookie返回如下键值对:

>>  cookies[:utm_params]
=> "{:source=>\"facebook\", :medium=>\"facebook_feed\", :campaign=>\"123123123123\", :max_age=>2592000}"

我已在Subscription模型中创建了以下字段:

#  utm_source             :string
#  utm_medium             :string
#  utm_campaign           :string

当前的Subscription.create代码如下,但不知道如何将Cookie中的值保存到对应字段:

@subscription = Subscription.create!({        
  utm_source: cookies[:utm_params][:source],        
  # utm_medium: cookies[:utm_params],        
  # utm_campaign: cookies[:utm_params],      
})
解决方案(重构后代码)

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
})

内容的提问来源于stack exchange,提问作者Emil Ståhl Myllyaho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:45:54