簡體   English   中英

如何在rails序列化程序中按屬性排序?

[英]How to sort by attributes in rails serializer?

正如標題所說,我應該如何使用 Rails 中的 Active Model Serializer 中的屬性對 api 進行排序?

我有一個包含購物清單的示例 api。 它包括產品名稱、位置和價格。 在我的序列化程序中

class ShoppingListSerializer < ActiveModel::Serializer
  attributes :id, :name, :location, :price

  def id
    Product.find(object.product_id).id
  end

  def name
    Product.find(object.product_id).name
  end

  def location
    Product.find(object.product_id).location
  end

  def price
    Product.find(object.product_id).price
  end
end

我想使用屬性name對其進行排序。 我該怎么做? 謝謝你。

在您的示例中,您不是在序列化購物清單,而是在序列化產品。

我建議做這樣的事情:

在控制器中 -

def serialize_products_from(shopping_list)
  ActiveModelSerializers::SerializableResource.new(
    shopping_list.products,
    each_serializer: ProductSerializer
  )
end

記住您的 shopping_list 對象有很多產品。 如果屬性 id/name/location/price 是 Product 表上的數據庫列,則不需要為它們定義方法。 只有在需要操作序列化程序給出的輸出時才定義方法。

在序列化器中 -

class ProductSerializer < ActiveModel::Serializer
  attributes :id, :name, :location, :price

  def price_in_dollars
    "#{object.price / 100},#{object.price % 100}"
  end
end

您可以稍后嘗試對結果進行排序

serialize_products_from(shopping_list).sort

或者嘗試從這里開始使用其他一些解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM