Определить текущую запись в методе контроллера Rails - PullRequest
0 голосов
/ 26 мая 2020
• 1000 Я основал свои методы контроллера на приведенном ниже коде.
def create
    user = User.find(params[:followed_id])
    current_user.follow(user)
    redirect_to user
end

def destroy
    user = Relationship.find(params[:id]).followed
    current_user.unfollow(user)
    redirect_to user
end

Однако, поскольку активная запись, которая будет действовать как последователь, не может быть вызвана аналогично current_user, у меня возникли проблемы с адаптацией этой части код. Мой текущий код выглядит следующим образом:

def create
    record = Record.find(params[:parent_id])
    current_record = Record.find(params[:child_id])
    current_record.follow(record)
    redirect_to record
end

def destroy
    Record = Recordrelationship.find(params[:id]).parent
  current_record = Recordrelationship.find(params[:id]).child
    current_record.unfollow(record)
    redirect_to record
end

В настоящее время я получаю ошибку «Не удалось найти запись без идентификатора», возникшую из-за этого кода. Для справки, я использовал это как основу для своей модели: https://3rd-edition.railstutorial.org/book/following_users. Дополнительный соответствующий код приведен ниже:

Маршруты

resources :records do
    member do
      get :children, :parents
    end
  end

  resources :recordrelationships, only: [:create, :destroy]

Модель записи

has_many :active_relationships, class_name: "Recordrelationship",
                                foreign_key: "child_id",
                                dependent: :destroy
has_many :passive_relationships, class_name: "Recordrelationship",
                                 foreign_key: "parent_id",
                                 dependent: :destroy
has_many :children, through: :active_relationships, source: :parent
has_many :parents, through: :passive_relationships, source: :child

validates :name, presence: true
validates :name, uniqueness: true

def follow(other_record)
    children << other_record
end

def unfollow(other_record)
    children.delete(other_record)
end

Модель отношений

class Recordrelationship < ApplicationRecord
    belongs_to :child, class_name: "Record"
    belongs_to :parent, class_name: "Record"
    validates :child_id, presence: true
    validates :parent_id, presence: true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...