По умолчанию вы получите только JSON, который представляет modelb
в вашем примере выше. Но вы можете указать Rails включить и другие связанные объекты:
def export
@export_data = ModelA.find(params[:id])
respond_to do |format|
format.html
format.json { render :json => @export_data.to_json(:include => :modelb) }
end
end
Вы можете даже сказать, чтобы исключить определенные поля, если вы не хотите видеть их в экспорте:
render :json => @export_data.to_json(:include => { :modelb => { :except => [:created_at, updated_at]}})
Или, включите только определенные поля:
render :json => @export_data.to_json(:include => { :modelb => { :only => :name }})
И вы можете вкладывать их так глубоко, как вам нужно (допустим, у ModelB также есть_MannyC):
render :json => @export_data.to_json(:include => { :modelb => { :include => :modelc }})
Если вы хотите включить несколько дочерних ассоциаций моделей, вы можете сделать следующее:
render :json => @export_data.to_json(include: [:modelA, :modelB, :modelN...])