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
相关产品推荐
相关产品推荐

