2015-04-10 5 views
1

У меня есть две моделирельсов уточнить включают столбцы

class User < ActiveRecord::Base 
    has_many :resources 
end 

class Resource < ActiveRecord::Base 
    belongs_to :user 
    has_many :resource_images, :dependent => :destroy 
    has_many :resource_activities, :dependent => :destroy 
end 

Контроллер:

resource = Resource.where(:id => params[:id]) 
render :json => resource, :include => [:resource_images, :resource_activities, :user], :status => 200 

Есть простой способ для фильтрации столбцов, чтобы вернуться из пользовательского модели?

С уважением.

+0

фильтровать, какие столбцы? –

ответ

0

Конечно, вы можете сделать это:

render :json => resource, :include => {:resource_images => only: {[:id, :your_column]}, :resource_activities, :user }, :status => 200 

или использования, за исключением:

render :json => resource, :include => {:resource_images => { except: [:id, :your_column]}, :resource_activities, :user }, :status => 200 

Вы можете даже включать методы, если вам нужно:

render :json => resource, :include => { resource_images: { methods: :thumbnail}, :resource_activities, :user }, :status => 200 

Вот очень хорошая статья если вы хотите узнать больше: https://quickleft.com/blog/keeping-your-json-response-lean-in-rails/

+0

Вы также можете рассмотреть возможность создания сериализатора. [link] (http://robots.thoughtbot.com/better-serialization-less-as-json#ItJIet) – Joshua

+0

Спасибо, мне нравится идея использования кроме. Я пытаюсь реализовать его следующим образом: render: json => resource,: include => {: user => {except: [: id,: email]},: resource_activities,: resource_images},: status => 200 , но я получил: синтаксическая ошибка, неожиданное ',', expecting => ...: email]},: resource_activities,: resource_images},: status ... любая идея? –

+0

Я работал с этой статьей! благодаря –

Смежные вопросы