我知道这个版本还没有正式发布但今天我正在检查rc3,我注意到我不能再在我的序列化程序中使用Rails url helpers了。在0.8.x版本中,我可以执行以下操作:
class BrandSerializer < BaseSerializer
attributes :id, :name, :slug, :state
attributes :_links
def _links
{
self: api_v1_company_brand_path(object.company_id, object.id),
company: api_v1_company_path(object.company_id),
products: api_v1_company_brand_products_path(object.company_id, object.id)
}
end
end
但这是新版本中没有的。解决这个问题的最佳方法是什么,以便我可以在链接器中保存链接?
编辑: 现在我正在做以下事情但很想听听是否有更惯用的方法。
class BaseSerializer < ActiveModel::Serializer
include Rails.application.routes.url_helpers
答案 0 :(得分:6)
如果您将此添加到WCSessionDelegate
或甚至可能添加到生成响应的控制器:
func session(session: WCSession, activationDidCompleteWithState activationState: WCSessionActivationState, error: NSError?){
}
func sessionDidBecomeInactive(session: WCSession) {
}
func sessionDidDeactivate(session: WCSession) {
}
然后,您可以使用序列化程序中的ApplicationController
来访问URL帮助程序(或任何查看方法)。
示例:serialization_scope :view_context
我认为这可能比将所有这些URL帮助程序等包含在序列化程序类中更清晰。
答案 1 :(得分:1)
包括已被排除的图书馆(正如您所做的那样)绝对是最短的路线(在修改宝石本身之外,就个人而言)