[RUBY-ON-RAILS] 개체 관계 및 JSON 렌더링 레일
RUBY-ON-RAILS개체 관계 및 JSON 렌더링 레일
면책 조항, 나는 거의 레일에 대해 알고있다. 나는 간결하려고합니다. 레일에서 다음과 같은 모델의 관계를 감안할 때 :
class ModelA < ActiveRecord::Base
belongs_to :ModelB
...
class ModelB < ActiveRecord::Base
has_many :ModelA
MODELA 컨트롤러의 show 액션을 호출 할 때 반환 된 JSON은 문제의 ObjectA가의 자녀로되어있는 ObjectB의 모든 하위 ObjectAs을 표시해야합니다.
내가 ObjectA의 ID 1, 2, 3 다음 액세스가 포함 된 ObjectB이 그래서 경우 : /modela/1.json
내가 볼 수 :
{
"modelb": {
"id": "1",
"modela": [insert the ModelA JSON for ID's 1, 2 and 3]
}
}
해결법
-
==============================
1.기본적으로 당신은 단지 위의 예에서 modelb를 나타내는 JSON을 얻을 것이다. 그러나, 당신은 다른 관련 개체를뿐만 아니라 포함하도록 레일을 알 수 있습니다 :
기본적으로 당신은 단지 위의 예에서 modelb를 나타내는 JSON을 얻을 것이다. 그러나, 당신은 다른 관련 개체를뿐만 아니라 포함하도록 레일을 알 수 있습니다 :
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도 ModelC를 has_many 가정 해 봅시다) 필요로하는 :
render :json => @export_data.to_json(:include => { :modelb => { :include => :modelc }})
여러 자식 모델 연결을 포함 할 경우, 다음을 수행 할 수 있습니다 :
render :json => @export_data.to_json(include: [:modelA, :modelB, :modelN...])
-
==============================
2.당신이 JSON 렌더링에 대한보다 유연한 접근 방식을 원하는 경우에, 당신은 보석 제이빌더 사용을 고려할 수 있습니다 https://github.com/rails/jbuilder
당신이 JSON 렌더링에 대한보다 유연한 접근 방식을 원하는 경우에, 당신은 보석 제이빌더 사용을 고려할 수 있습니다 https://github.com/rails/jbuilder
그것은 당신이 편리한 방법으로 사용자 지정 특성, 인스턴스 변수, 협회, 재사용 JSON의 파셜을 렌더링 할 수 있습니다.
from https://stackoverflow.com/questions/3462754/rails-object-relationships-and-json-rendering by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 톱 부산 m 잉꼬 s たぁちおん 엣 r (0) | 2020.02.22 |
---|---|
[RUBY-ON-RAILS] 링크 내부와 번역 텍스트 - 국제화 레일 (0) | 2020.02.22 |
[RUBY-ON-RAILS] 보석은 권한 문제를 설치 (0) | 2020.02.22 |
[RUBY-ON-RAILS] 루비에 낙타 표기법에 snake_case에서 문자열 변환 (0) | 2020.02.22 |
[RUBY-ON-RAILS] NoMethodError 레일 컨트롤러에서 도우미 메서드를 호출 할 때 (0) | 2020.02.22 |