![](/img/trans.png)
[英]How to pass attributes in Serializer not in model in Rails (ActiveRecord)?
[英]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.