레일 객체 관계 및 JSON 렌더링
면책 사항입니다. 저는 레일즈에 대해 아는 것이 거의 없습니다.간결하도록 하겠습니다.레일에서 다음과 같은 모델 관계가 지정됩니다.
class ModelA < ActiveRecord::Base
belongs_to :ModelB
...
class ModelB < ActiveRecord::Base
has_many :ModelA
Model A 컨트롤러의 show 액션을 호출하면 반환된 JSON은 문제의 Object A가 자녀인 Object B의 자녀인 모든 ObjectA를 표시해야 합니다.
오브젝트를 포함하는 오브젝트B가 있는 경우ID 1, 2, 3의 A에 접속하여 /modela/1.json에 접속합니다.
봐야지:
{
"modelb": {
"id": "1",
"modela": [insert the ModelA JSON for ID's 1, 2 and 3]
}
}
기본적으로는 다음을 나타내는 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 }})
필요한 만큼 깊이 삽입할 수 있습니다(예를 들어 모델 B에도 모델 C가 많이 있습니다).
render :json => @export_data.to_json(:include => { :modelb => { :include => :modelc }})
여러 하위 모델 연결을 포함하려는 경우 다음을 수행할 수 있습니다.
render :json => @export_data.to_json(include: [:modelA, :modelB, :modelN...])
json 렌더링을 보다 유연하게 하고 싶은 경우 gem jbuilder를 사용하는 것을 고려해 보십시오.https://github.com/rails/jbuilder
이를 통해 사용자 지정 속성, 인스턴스 변수, 연결을 렌더링하고 json partial을 편리하게 재사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/3462754/rails-object-relationships-and-json-rendering
'source' 카테고리의 다른 글
| 리액트를 사용하려고 합니다.바디 스타일을 설정하는 DOM (0) | 2023.03.29 |
|---|---|
| 메뉴 항목 및 페이지 목록에 대한 li 클래스 & ID 삭제 (0) | 2023.03.29 |
| React의 Virtual DOM은 정확히 어떻게 빨라집니까? (0) | 2023.03.29 |
| 휴지 상태를 설정하는 방법.spring-boot에서 format_sql을 사용할 수 있습니까? (0) | 2023.03.29 |
| 하위 디렉터리의 워드프레스 템플릿 파일 (0) | 2023.03.29 |