2017-06-04 1 views
0

je dois nettoyer mon code d'utiliser:Inclure les associations de modèles à partir du modèle

# class ProjectsController < ApiController 
def show 
    render json: Project.find_by(id: params[:id]).as_json(include: :user) 
end 

à:

render json: Project.find_by(id: params[:id]) // should include the association 

Y at-il un moyen de mettre cette logique dans le modèle? Im en utilisant Rails 5 API

class Project < ApplicationRecord 
    belongs_to :user, include: :project // I thought this would work 

    def self.foo 
    self.includes(:user) 
    end 
end 

# in controller 
render json: Project.foo.find_by(id: params[:id]) // nothing 

si Project appartient à de nombreux modèles et doivent inclure en appelant seulement Project.find(1), je vais avoir un peu includes imbriqué dans mon contrôleur. Pourrais-je mettre toute cette logique dans le modèle alors Project.find(1) montrerait toutes les associations au format json?

+0

vous pouvez essayer cela, dans votre modèle de projet: 'def as_json (options = {}) super (y compris:: l'utilisateur) fin ' – Thanh

+0

Salut tout ... malade essayer les deux dans un peu puis répondre. – Sylar

+0

@Thanh Excuses pour tard répondre. Pardon. Cela a bien fonctionné. Merci! Vous pourriez ajouter ceci comme réponse si vous aimez. – Sylar

Répondre

0

Dans votre modèle de projet, passer outre as_json méthode pour inclure l'association user:

def as_json(options = {}) 
    super(include: :user) 
end