FIX: UserProfileView: Do not log IP of logged-in users
This commit is contained in:
parent
7e8ef5d6e1
commit
501bc0e9af
|
@ -1,5 +1,5 @@
|
|||
class UserProfileView < ActiveRecord::Base
|
||||
validates_presence_of :user_profile_id, :ip_address, :viewed_at
|
||||
validates_presence_of :user_profile_id, :viewed_at
|
||||
|
||||
belongs_to :user_profile
|
||||
|
||||
|
@ -9,6 +9,7 @@ class UserProfileView < ActiveRecord::Base
|
|||
if user_id
|
||||
return if user_id < 1
|
||||
redis_key << ":user-#{user_id}"
|
||||
ip = nil
|
||||
else
|
||||
redis_key << ":ip-#{ip}"
|
||||
end
|
||||
|
@ -59,13 +60,12 @@ end
|
|||
# id :integer not null, primary key
|
||||
# user_profile_id :integer not null
|
||||
# viewed_at :datetime not null
|
||||
# ip_address :inet not null
|
||||
# ip_address :inet
|
||||
# user_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_user_profile_views_on_user_id (user_id)
|
||||
# index_user_profile_views_on_user_profile_id (user_profile_id)
|
||||
# unique_profile_view_ip (viewed_at,ip_address,user_profile_id) UNIQUE
|
||||
# unique_profile_view_user (viewed_at,user_id,user_profile_id) UNIQUE
|
||||
# unique_profile_view_user_or_ip (viewed_at,user_id,ip_address,user_profile_id) UNIQUE
|
||||
#
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
class AllowNullIpUserProfileView < ActiveRecord::Migration[5.1]
|
||||
def up
|
||||
begin
|
||||
Migration::SafeMigrate.disable!
|
||||
change_column :user_profile_views, :ip_address, :inet, null: true
|
||||
ensure
|
||||
Migration::SafeMigrate.enable!
|
||||
end
|
||||
|
||||
remove_index :user_profile_views,
|
||||
column: [:viewed_at, :ip_address, :user_profile_id],
|
||||
name: :unique_profile_view_ip,
|
||||
unique: true
|
||||
remove_index :user_profile_views,
|
||||
column: [:viewed_at, :user_id, :user_profile_id],
|
||||
name: :unique_profile_view_user,
|
||||
unique: true
|
||||
add_index :user_profile_views, [:viewed_at, :user_id, :ip_address, :user_profile_id],
|
||||
name: :unique_profile_view_user_or_ip,
|
||||
unique: true
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
|
@ -34,6 +34,8 @@ RSpec.describe UserProfileView do
|
|||
['1.1.1.1', '2.2.2.2'].each do |ip|
|
||||
add(user_profile_id, ip, other_user.id, time)
|
||||
expect(described_class.count).to eq(1)
|
||||
# should not actually log IPs
|
||||
expect(UserProfileView.where(user_id: other_user.id).count(:ip_address)).to eq(0)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue