Как получить доступ к ':много:хотя присоединиться к таблице данных, при использовании в JSON?
У меня есть три модели (упрощенные здесь):
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 join; в частности, значение для 'needs_edit'.
Я не могу понять, как получить эти данные в вызове to_json.
Может кто-нибудь помочь мне? Заранее большое спасибо.
Qryss
2 ответа:
Не уверен, но разве это не должно сработать?
@child.to_json( :include => { :observations => { :include => :photos, :methods => [:key, :title, :subtitle] }, :childviews => { :only => :needs_edit } }, :except => [:password] )
Править: Это тоже может сработать, так как childviews принадлежит к overvation:
@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