Haben Sie eine kurze Frage zur Einrichtung, wie Sie anzeigen, wer das Profil eines Nutzers in meiner App mithilfe von Schienen besucht hat? Ich folgte der akzeptierten Antwort auf diese Frage - How to show who has visited your profile?, stieß aber auf einen Fehler, der mich ein wenig verwirrt hat. Ich habe den Fehler aufgelistet, die ich erhalte und meine entsprechenden Code unter:Wie wird angezeigt, wer das Profil eines Benutzers in Rails besucht hat?
Zwei Fehler in meinem Benutzer-Controller
Error1 erscheinen: nicht definierte Methode visits' for nil:NilClass Error2: can't write unknown attribute
visitor_id` >> Immer wenn ich ein Profil des Benutzers besuchen
Benutzer Controller
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy, :share, :follow]
before_action :create_visit
def show
@user = User.find(params[:id])
@visitprofiles = current_user.visitors.where('created_at > ?', 1.month.ago)
end
private
def set_user
@user = User.find(params[:id])
end
def create_visit
@user.visits.create(visitor: current_user)
end
User.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable, omniauth_providers: [:facebook]
has_many :visits
has_many :visitors, through: :visits
Visit.rb
class Visit < ApplicationRecord
belongs_to :user
belongs_to :visitor, class_name: 'User', foreign_key: 'visitor_id'
end
sollten Sie wahrscheinlich 'before_action: create_visit, nur: [: show]' verwenden, da sonst die Zahl zu hoch wird. –