Введение

Если вы новичок в Ruby on Rails, как и я, вы, возможно, задавались вопросом о внедрении подобной экосистемы в ваше новое приложение. Если это так, то вы, возможно, заметили, что вам нужно принять во внимание множество вещей, таких как проверки учетных записей, как представить кнопку и как ваши модели связаны в вашей базе данных. Все это становится немного сложным, но самое замечательное в том, что, как только вы это сделаете, вы узнаете, как это реализовать каждый раз! Моя цель в этом руководстве - провести вас через этот первый раз, чтобы вы могли легко и эффективно реализовать кнопку «Нравится» в своем следующем проекте. Ладно, поговорим, приступим!

КРАТКОЕ ПРИМЕЧАНИЕ. Это руководство предназначено для людей, которые уже хорошо разбираются в рубине на рельсах. Если вы боретесь с ассоциациями, проверками или аутентификацией, я советую вам сначала изучить эти аспекты рельсов. Я также настоятельно рекомендую использовать драгоценный камень разработки для вашей аутентификации. Спасибо!

Шаг 1. Создание ассоциаций

Первый шаг в нашем путешествии по кнопке лайка - составить карту наших ассоциаций. В этом примере мы сохраним простоту и скажем, что у нас есть пользователь, публикация и, конечно же, подобная модель. У нашей пользовательской модели будет много лайков, как и у нашей модели публикации. Это потому, что пользователь может лайкать много сообщений (хотя он может лайкать каждое сообщение только один раз), а наша публикация может нравиться пользователям много раз. Это означает, что нам нужно сделать нашу подобную модель моделью соединения в нашей базе данных. Для этого сначала добавьте своего пользователя и модели публикации в базу данных с любыми полями, которые вам нравятся, а затем, используя свой терминал, добавьте аналогичную модель следующим образом:

rails g model like user_id:belongs_to post_id:belongs_to

Шаг 2. Настройка собственного маршрута

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

put ‘/post/:id/like’ to: ‘posts#like’, as: ‘like’

Здесь мы отправляем запрос на размещение с идентификатором публикации, которая нам нравится, и вызываем наш метод Like в нашем контроллере.

Шаг 3. Создание нашего метода лайков

Затем мы хотим добавить в наш контроллер подобный метод, который будет задействован в маршруте. Поскольку нам нравятся сообщения, мы захотим поместить этот метод в наш контроллер сообщений. Подобный метод будет выглядеть примерно так:

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

Шаг 4. Убедитесь, что им понравится только один раз

Теперь, когда у нас есть наш маршрут и настроен контроллер, пришло время настроить нашу модель с помощью некоторого кода быстрой проверки. Первый код, который мы собираемся написать, будет способом проверки с использованием метода в нашем html. Этот код будет в нашей модели поста и будет выглядеть примерно так:

Это проверяет, понравилась ли публикация пользователю или она еще не понравилась. Если они есть, он вернет true, а если нет, он вернет false.

Шаг 5. Добавление второй проверки к нашей модели Like

Если мы хотим дважды проверить, чтобы убедиться, что нашему пользователю может понравиться публикация только один раз, мы также можем добавить проверку уникальности в нашу подобную модель следующим образом:

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

Последний шаг: добавьте кнопку в файл ERB

Теперь все, что нам нужно сделать, это добавить кнопку и немного логики в show.html.erb файл нашего сообщения.

Здесь мы используем user_signed_in? метод, созданный devise, чтобы проверить, вошел ли наш пользователь в систему (если вы не используете devise, вам придется сделать этот метод самостоятельно). Затем мы используем наш liked? метод, чтобы проверить, понравился ли уже этот конкретный пост нашему пользователю, и если да, мы делаем атрибут disabled нашей кнопки равным true. Если им это еще не понравилось, наша кнопка работает как обычно.

Заключение

Вот и вы сделали свою первую кнопку "Мне нравится", поздравляю! Поначалу это может показаться пугающим, но я надеюсь, что этот урок помог вам в правильном направлении к созданию вашей первой кнопки «Нравится». Если у вас есть какие-либо вопросы, обязательно оставьте комментарий, и я постараюсь ответить вам как можно скорее. Удачного кодирования!