Как получить доступ: ': HAS_MANY: Хотя «Присоединяйтесь к данным таблицы при использовании To_json?
-
26-09-2019 - |
Вопрос
У меня есть три модели (упрощенные здесь):
class Child < ActiveRecord::Base
has_many :childviews, :dependent => :nullify
has_many :observations, :through => :childviews
end
class Childview < ActiveRecord::Base
belongs_to :observation
belongs_to :child
end
class Observation < ActiveRecord::Base
has_many :childviews, :dependent => :nullify
has_many :children, :through => :childviews
end
Я посылаю это на какой-нибудь JavaScript, используя Rails 'to_json метод, как это:
render :layout => false , :json => @child.to_json(
:include => {
:observations => {
:include => :photos,
:methods => [:key, :title, :subtitle]
}
},
:except => [:password]
)
Это отлично работает. Наблюдения извлекаются штрафом «через таблицу присоединения» (ChildViews).
Однако, Я также хочу получить данные, которые сидят в таблице присоединения ChildViews; В частности, значение для «потребностей_Edit».
Я не могу понять, как получить эти данные в To_json Call.
Может кто-нибудь помочь мне? Спасибо заранее.
qryss
Решение
Не уверен, но не должна ли эта работа?
@child.to_json(
:include => {
:observations => {
:include => :photos,
:methods => [:key, :title, :subtitle]
},
:childviews => { :only => :needs_edit }
},
:except => [:password]
)
Редактировать: Это может работать тоже, так как ChildViews принадлежит версии:
@child.to_json(
:include => {
:observations => {
:include => { :photos, :childviews => { :only => :needs_edit } }
:methods => [:key, :title, :subtitle]
}
},
:except => [:password]
)
Другие советы
Благодаря роску за указатели - у меня сейчас он работает!
Этот код:
@child.to_json(:include =>
{
:observations => {
:include => {
:photos => {},
:childviews => {:only => :needs_edit}
},
:methods => [:S3_key, :title, :subtitle]
}
},
:except => [:password]
)
Дает мне этот вывод (сокращенно для ясности):
{
"child":
{
"foo":"bar",
"observations":
[
{
"foo2":"bar2",
"photos":
[
{
"foo3":"bar3",
}
],
"childviews":
[
{
"needs_edit":true
}
]
}
]
}
}
Спасибо, рок! Это делал мою голову.
:)
qryss