Skip to content
Snippets Groups Projects
Commit 2b996689 authored by scariot's avatar scariot
Browse files

added ip from anonymous users to views

parent ab1b7adc
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,8 @@
# along with portalmec. If not, see <http://www.gnu.org/licenses/>.
## This concern has +like+, +unlike+ controller actions
## When you use it, be sure that +set_sociable+ method is implemented in your controller, otherwise an fatal error will raise.
## When you use it, be sure that +set_sociable+ method is implemented in your controller, otherwise a fatal error will raise.
module SociableController
extend ActiveSupport::Concern
......@@ -55,7 +56,8 @@ module SociableController
end
def view_object!
sociable.view current_user if user_signed_in?
# Change request.remote_ip to req.env["HTTP_X_REAL_IP"] in production
sociable.view(current_user, request.remote_ip)
end
end
......@@ -46,8 +46,8 @@ module Sociable
!Share.where(user: user, shareable: self).blank?
end
def view(user)
View.create(user: user, viewable: self)
def view(user, ip)
View.create(user: user, ip: ip, viewable: self)
end
def viewed?(user)
......
......@@ -27,6 +27,7 @@
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# ip :string
#
class View < ApplicationRecord
......@@ -34,14 +35,12 @@ class View < ApplicationRecord
include Trackable
belongs_to :viewable, polymorphic: true, counter_cache: true
belongs_to :user
belongs_to :user, optional: true
validates_presence_of :user, :viewable
validates_presence_of :viewable, :ip
before_create :current_time_greater_than_last
scope :created_last, ->(user) { where(user: user).order('created_at DESC').limit(1) }
def recipient
viewable
end
......@@ -49,7 +48,7 @@ class View < ApplicationRecord
private
def current_time_greater_than_last
last_view = viewable.views.created_last(user).first
last_view = viewable.views.where(user: user, ip: ip).order('created_at DESC').limit(1).first
unless last_view.blank?
return false if Time.current < (last_view.created_at + 1.day)
......
# Copyright (C) 2015 Centro de Computacao Cientifica e Software Livre
# Departamento de Informatica - Universidade Federal do Parana
#
# This file is part of portalmec.
#
# portalmec is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# portalmec is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with portalmec. If not, see <http://www.gnu.org/licenses/>.
class AddIpToViews < ActiveRecord::Migration[5.0]
def change
add_column :views, :ip, :string
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment