gpt4 book ai didi

ruby-on-rails - JSONAPI 资源 : serialize a namespaced model

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:42 31 4
gpt4 key购买 nike

我正在尝试使用 JSONAPI Resources在 Rails 引擎中,我定义了 DokiCore::Tenant (模型)在 doki_core/app/models/tenant.rb 和 DokiCore::TenantResource在 doki_core/app/resources/tenant_resource.rb 中。当我尝试序列化为哈希时,遇到以下错误:

NoMethodError: undefined method tenant_path' for #<Module:0x007f9d04208778>
from /Users/typeoneerror/.rvm/gems/ruby-2.2.2@doki/gems/jsonapi-resources-0.6.1/lib/jsonapi/link_builder.rb:77:in
public_send'

资源使用model_name让它知道模型的实际位置:

module DokiCore
class TenantResource < JSONAPI::Resource
model_name 'DokiCore::Tenant'
# ...
end
end

我正在尝试像这样为租户输出哈希:

tenant = DokiCore::Tenant.find(1); 
resource = DokiCore::TenantResource.new(tenant, nil);
serializer = JSONAPI::ResourceSerializer.new(DokiCore::TenantResource);
serializer.serialize_to_hash(resource);

这是错误发生的地方。

如何让链接正常工作和/或禁用它们?我假设这是它在输出的 json 中的“链接”键下将 URL 作为链接添加到资源。

最佳答案

解决了这个问题。如果您的路由以任何方式命名空间,您的资源也需要命名空间以匹配。我的路线看起来像:

namespace :api do
namespace :v1 do
resources :tenants
end
end

因此资源需要以相同的方式命名:

tenant = DokiCore::Tenant.find(1); 
resource = DokiCore::API::V1::TenantResource.new(tenant, nil);
serializer = JSONAPI::ResourceSerializer.new(DokiCore::API::V1::TenantResource);
serializer.serialize_to_hash(resource);

关于ruby-on-rails - JSONAPI 资源 : serialize a namespaced model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356359/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com