Записи всех пользователей отображаются независимо от того, кто вошел в систему - PullRequest
0 голосов
/ 24 февраля 2020

Я работаю над своим первым рельсовым проектом. В настоящее время у меня есть страница, на которой должны отображаться только записи, которые были добавлены зарегистрированным пользователем.

Вот как выглядит страница. Большинство записей в верхней части являются случайными, просто чтобы убедиться, что он принимается из формы.

Я создал другую учетную запись и понял, что все еще могу видеть записи из другой учетной записи.

Здесь: https://share.getcloudapp.com/yAuv4k7k

В настоящее время у меня есть контроллер установлен как

class PersonsController < ApplicationController

  def index
    @persons = Person.all
  end

  def show
    @person = Person.find(params[:id])
  end

end

Я оглянулся и подозреваю, что придется сделать что-то подобное, но я не уверен, куда поместить код.

Я попробовал следующее:

before_filter :authenticate_user!, only: [:persons, :comicbooks]

Также, для сбора сообщений определенного пользователя c, я попробовал это:

@persons = current_user.persons

Вот Я получаю сообщение об ошибке: https://share.getcloudapp.com/z8uXw1y6

Вот файл persons_controller.rb: https://share.getcloudapp.com/JruWwndN

- Вся помощь приветствуется. Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Из картинок, которыми вы поделились, у вас в контроллере есть код с переменной экземпляра:

@person = current_user.Person

Это неправильно, поскольку Person не принадлежит user, а current_user.person.

current_user загружается глобально, поэтому обратный вызов authenticate_user! не влияет на него. Теперь, чтобы получить все сообщения для указанного c, зарегистрированного пользователя, вы можете использовать:

@posts = current_user.persons

Код, который вы указали в последней строке вашего вопроса, должен работать, но я не думаю, что это так же, как у вас на скриншоте ошибки, который вы опубликовали.

0 голосов
/ 24 февраля 2020

Первое, before_filter :authenticate_user!, only: [:persons, :comicbooks] не работает. правильный синтаксис: before_filter :authenticate_user!, only: [:index] или before_filter :authenticate_user!, only: [:index] или просто before_filter :authenticate_user!. Это означает, что метод authenticate_user! будет исполнен перед выполнением методов index, show.

Во-вторых, если вы хотите собирать сообщения определенного пользователя c, вам необходимо убедиться, что вы были объявлены has_many :posts в пользовательской модели. Затем вы можете использовать current_user.posts, чтобы собрать все сообщения указанного пользователя c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...