Любая помощь будет наиболее ценной.
Это работает в консоли rails
@user1 = User.first
@user2 = User.last
@user1.follow.@user2
Friendship Create (0.4ms) INSERT INTO "friendships" ("follower_id", "followed_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["follower_id", 1], ["followed_id", 2], ["created_at", "2020-04-29 17:07:59.048027"], ["updated_at", "2020-04-29 17:07:59.048027"]]
Помещение в представление бросков:
NoMethodError в FriendshipsController # создать неопределенный метод `follow 'для 2: Целое число
- Я попытался скопировать следующий метод в контроллер дружбы, но это не имело значения.
FriendshipsController
class FriendshipsController < ApplicationController
def create
@u = current_user.id
@u.follow(find_user.to_i)
redirect_to :back, notice: 'Followed User.'
end
private
def find_user
params.require(:uid)
end
end
дружба.rb
class Friendship < ApplicationRecord
belongs_to :follower, class_name: 'User'
belongs_to :followed, class_name: 'User'
validates :follower_id, presence: true
validates :followed_id, presence: true
end
user.rb
class User < ApplicationRecord
has_many :active_friendships, class_name: 'Friendship', foreign_key: 'follower_id', dependent: :destroy
has_many :passive_friendships, class_name: 'Friendship', foreign_key: 'followed_id', dependent: :destroy
has_many :following, through: :active_friendships, source: :followed
has_many :followers, through: :passive_friendships, source: :follower
def follow(user)
active_friendships.create(followed_id: user.id)
end
def unfollow(user)
active_friendships.find_by(followed_id: user.id).destroy
end
def following?(user)
following.include?(user)
end
end
разметка для создания друга req
<%= button_to 'Unfollow', friendships_path(uid: @user), method: :delete, data: { confirm: 'Are you sure?' } %>
Я следовал этому уроку https://www.youtube.com/watch?v=8DwSxhgArFI