0

私の Application Controller では、3 つの場所に Cookie を設定しています。前のフィルターで...

def set_abingo_identity
  # skip bots
  if request.user_agent =~ /#{@robot_regular_expression}/i
    Abingo.identity = "robot"
  elsif current_user
    Abingo.identity = cookies[:abingo_identity] ||= 
          { :value => current_user.id, :expires => 1.year.from_now }
  else
    Abingo.identity = cookies[:abingo_identity] ||= 
          { :value => rand(10 ** 10), :expires => 1.year.from_now }
  end
end

...そして2つの方法で...

def remember_visit url 
  20.times do |i| 
    # Add cookie to referrer list
    name = "referrer#{i}"
    if cookies[name].blank?
      cookies[name] = {:value => url, :expires => Time.now + 1.year }
      break
    elsif cookies[name] == url 
      break # skip
    end 
  end 
end 

...そしてこれ...

def set_referral_cookie val
  ref_name = "referral_id"
  offer_name = "offer_id"
  cur = cookies[ref_name]
  offer = cookies[offer_name]
  affiliate = Affiliate.find_by_name val
  if cur.blank? || offer.blank?
    if affiliate
      if cur.blank?
        cookies[ref_name] = { :value => affiliate.id.to_s, :expires => Time.now + 1.year }
      end
      if offer.blank? && affiliate.offer? && !affiliate.expired?
        cookies[offer_name] = { :value => affiliate.id.to_s, :expires => Time.now + 1.year }
      end
    end
  end
  return affiliate
end

デバッガーでステップスルーすると、before フィルターcookies["abingo_identity"]が設定されていることがわかります。次に、remember_visit() で と の両方cookies["referrer0"]が設定され、次に set_referral_cookie() で 3 つすべてが設定されます。

しかし、機能テストに戻ると、cookies["abingo_identity"]設定されているだけです。

cookies["abingo_identity"] の部分が新しくなり、コメントアウトすると他の Cookie が残ります。

このコードの何が問題になっていますか?

更新: それらは削除されませんが、すべてがテスト ケースの @response.cookies にコピーされるわけではありません

4

0 に答える 0