0

Ich verwende den Edelstein active_model_serializers in meiner Rails 5 App. Ich habe ein paar Serializer-Dateien in /app/seralizers, user_serializer.rb, sector_serializer.rb und slot_serializer.rb erstellt.Rails NoMethodError: undefinierte Methode `includes 'für # <Benutzer: 0x007f62dbbe62f8>

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :first_name, :last_name, :email, :phone, :admin, :auth_token, :organization_id 

    has_many :sectors 
    has_many :slots 
    has_many :elements 
end 

class SectorSerializer < ActiveModel::Serializer 
    attributes :id, :user_id, :sector_number, :title 

    belongs_to :user 
    has_many :slots 
    has_many :elements 
end 

class SlotSerializer < ActiveModel::Serializer 
    attributes :id, :user_id, :sector_id, :sector_number, :title, :slot_number 

    belongs_to :user 
    belongs_to :sector 
    has_many :elements 
end 

Und in meinem Controller-Code, ich habe:

class Api::V1::UsersController < API::V1::BaseController 
    respond_to :json 

    def sky 
     @user = User.find_by_id(params[:user_id]).includes(:sectors, :slots) 

     if @user 
     render json: @user 
     else 
      raise "Unable to get Sky" 
     end 
    end 
end 

Mein Server einen Fehler an der Linie wirft, wo ich die .includes tun, und ich kann, warum nicht herausgefunden.

Jede Hilfe wird geschätzt. Vielen Dank!

Antwort

2

ändern

@user = User.find_by_id(params[:user_id]).includes(:sectors, :slots) 

zu

@user = User.includes(:sectors, :slots).find_by_id(params[:user_id]) 

Punkt ist, dass Sie includes auf eine Klasse (das erbt von ActiveRecord::Base/ApplicationRecord), nicht ein einziges Benutzerobjekt verlangen.

+0

Perfekt. Vielen Dank Ursus –

+0

Mein Vergnügen Herr :) – Ursus

Verwandte Themen