Я вложил отношения и построил их в соответствии с Rails Guide . A User
имеет множество Collections
, в которых много Sections
, каждый из которых содержит множество Links
. Однако при создании нового Link
user_id
не присваивается, а всегда nil
. section_id
и collection_id
устанавливаются правильно.
Контроллер
class Api::V1::LinksController < Api::V1::BaseController
acts_as_token_authentication_handler_for User, only: [:create]
def create
@link = Link.new(link_params)
@link.user_id = current_user
authorize @link
if @link.save
render :show, status: :created
else
render_error
end
end
private
def link_params
params.require(:resource).permit(:title, :description, :category, :image, :type, :url, :collection_id, :user_id, :section_id)
end
def render_error
render json: { errors: @resource.errors.full_messages },
status: :unprocessable_entity
end
end
Модели
Пользователь
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
acts_as_token_authenticatable
has_many :collections, dependent: :destroy
has_many :sections, through: :collections, dependent: :destroy
has_many :links, through: :sections, dependent: :destroy
mount_uploader :image, PhotoUploader
end
Коллекция
class Collection < ApplicationRecord
belongs_to :user
has_many :sections, dependent: :destroy
has_many :links, through: :sections, dependent: :destroy
mount_uploader :image, PhotoUploader
end
Раздел
class Section < ApplicationRecord
belongs_to :collection
has_many :links, dependent: :destroy
end
Ссылка
class Link < ApplicationRecord
belongs_to :section
end
Это правильный способ установить отношения, и может ли кто-нибудь помочь мне понять, что мне не хватает?