매개 변수를 ActiveModel Serializer에 전달하는 방법
활성 모델 변환기를 사용 하고 있습니다 . has_many 활동이있는 모델 이벤트가 있습니다.
처음 n 개의 활동이있는 이벤트를 반환하고 싶습니다. 매개 변수 n을 이벤트 시리얼 라이저에 전달해야합니다.
전달 된 옵션은 @options
해시를 통해 사용할 수 있습니다 . 따라서 다음과 같이하면됩니다.
respond_with @event, activity_count: 5
@options[:activity_count]
serializer 내에서 사용할 수 있습니다 .
버전에서 ~> 0.10.0
당신은 사용할 필요가 @instance_options
있습니다. 위의 @Jon Gold 예제 사용 :
# controller
def action
render json: @model, option_name: value
end
# serializer
class ModelSerializer::ActiveModel::Serializer
def some_method
puts @instance_options[:option_name]
end
end
@options
해시 염색 0.9
; 동등한 방법처럼 보이는 한 최근에 추가 -
def action
render json: @model, option_name: value
end
class ModelSerializer::ActiveModel::Serializer
def some_method
puts serialization_options[:option_name]
end
end
0.9.3을 사용하면 #serialization_options를 다음과 같이 사용할 수 있습니다.
# app/serializers/paginated_form_serializer.rb
class PaginatedFormSerializer < ActiveModel::Serializer
attributes :rows, :total_count
def rows
object.map { |o| FormSerializer.new(o) }
end
def total_count
serialization_options[:total_count]
end
end
# app/controllers/api/forms_controller.rb
class Api::FormsController < Api::ApiController
def index
forms = Form.page(params[:page_index]).per(params[:page_size])
render json: forms, serializer: PaginatedFormSerializer, total_count: Form.count, status: :ok
end
end
현재 0.10
의 활성 모델 시리얼 당신은을 통해 임의의 옵션을 전달할 수 instance_options
와 같이 변수 여기 .
# posts_controller.rb
class PostsController < ApplicationController
def dashboard
render json: @post, user_id: 12
end
end
# post_serializer.rb
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :body
def comments_by_me
Comments.where(user_id: instance_options[:user_id], post_id: object.id)
end
end
serialization_options 는 Active Model Serialization 0.9.3에서 잘 작동합니다.
render 명령과 함께 전달 된 옵션은 키-> serialization_options [: key]를 사용하여 serializer에서 액세스 할 수 있습니다 .
간단한 방법은 이벤트 직렬 변환기에 활동 메소드를 추가하고 n 개의 활동을 리턴하는 것입니다. 그게 다입니다.
class EventSerializer < ActiveModel::Serializer
has_many :activities
def activities
object.activities[0..9] # Select whatever you want
end
end
참고 URL : https://stackoverflow.com/questions/23347587/how-to-pass-parameters-to-activemodel-serializer
'ProgramingTip' 카테고리의 다른 글
DataContractSerializer를 사용하여 생성 화하지만 역화 할 수 없음 (0) | 2020.11.22 |
---|---|
If, Else, For, Foreach 등의 절을 접는 방법은 무엇입니까? (0) | 2020.11.22 |
Oracle SQL Developer- 그리드가 누락 된 쿼리 결과 창 (0) | 2020.11.22 |
객체가 Java의 클래스에 존재하는지 확인 (0) | 2020.11.22 |
UIImage를 CIImage로 또는 그 변환하는 방법 (0) | 2020.11.22 |