Я использую Rails 4.1.5 и Ahoy.Я добавил дополнительное поле в модель Visit, которое называется visitor_email (с миграцией).Я могу вручную создать объект Visit с помощью visitor_email.
В config / initializer / ahoy.rb я подписываюсь на хранилище данных track_visit.Здесь я хочу добавить электронную почту пользователя к новой модели посещения.Я вижу, что атрибут добавляется в хеш данных, прежде чем я вызову super.Но я также могу сказать, что он никогда не записывается в БД.
class Ahoy::Store < Ahoy::Stores::ActiveRecordTokenStore
# customize here
def track_visit(data)
# new visit
# if the landing page has a param that indicates it came from the share_profile_mailer
# if request.params[:landing_page] != request.params[:landing_page].split('?visiting_user=')
# data[:visitor_email] = request.params[:landing_page].split('?visiting_user=')[1]
# end
data[:visitor_email] = "example@email.com"
super(data)
end
end
Наблюдая за сервером, я вижу:
Processing by Ahoy::VisitsController#create as JSON
Parameters: {"visit_token"=>"d869c631-7f3a-4057-9bc2-eaa9160e9247", "visitor_token"=>"ebe8068e-fef0-4c25-93fd-54fe9e9aac75", "platform"=>"Web", "landing_page"=>"http://localhost:3000/organizations/35?visiting_user=colindmccann@gmail.com", "screen_width"=>1440, "screen_height"=>900, "visit"=>{"visit_token"=>"d869c631-7f3a-4057-9bc2-eaa9160e9247", "visitor_token"=>"ebe8068e-fef0-4c25-93fd-54fe9e9aac75", "landing_page"=>"http://localhost:3000/organizations/35?visiting_user=colindmccann@gmail.com", "screen_height"=>900, "screen_width"=>1440}}
[7, 16] in /Users/colin/Dev/Rails/sponsorcircle/config/initializers/ahoy.rb
7: # if the landing page has a param that indicates it came from the share_profile_mailer
8: # if request.params[:landing_page] != request.params[:landing_page].split('?visiting_user=')
9: # data[:visitor_email] = request.params[:landing_page].split('?visiting_user=')[1]
10: # end
11:
12: data[:visitor_email] = "example@email.com"
13: byebug
=> 14: super(data)
15: end
16: end
(byebug) data
{:started_at=>Mon, 27 May 2019 12:05:55 UTC +00:00, :visitor_email=>"example@email.com"}
(byebug) c
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 312 ORDER BY "users"."id" ASC LIMIT 1
(0.1ms) BEGIN
SQL (0.4ms) INSERT INTO "visits" ("browser", "device_type", "ip", "landing_page", "os", "screen_height", "screen_width", "started_at", "user_agent", "user_id", "visit_token", "visitor_token") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) RETURNING "id" [["browser", "Chrome"], ["device_type", "Desktop"], ["ip", "127.0.0.1"], ["landing_page", "http://localhost:3000/organizations/35?visiting_user=colindmccann@gmail.com"], ["os", "Mac OS X"], ["screen_height", 900], ["screen_width", 1440], ["started_at", "2019-05-27 12:05:55.071724"], ["user_agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"], ["user_id", 312], ["visit_token", "d869c631-7f3a-4057-9bc2-eaa9160e9247"], ["visitor_token", "ebe8068e-fef0-4c25-93fd-54fe9e9aac75"]]
(0.2ms) COMMIT
Completed 200 OK in 7834ms (Views: 0.2ms | ActiveRecord: 4.1ms)
Сначала я думал, что это может иметь какое-то отношение к моему параметруне разрешено контроллером посещения.Однако я не могу установить поле «Посещение» в track_visit (я пробовал, например, настроить браузер и utm_medium)
Примечание: я перезапустил сервер rails
Я что-то здесь неправильно понимаю?Или неправильно подходить к этому?