【发布时间】:2021-02-19 08:03:27
【问题描述】:
我正在尝试使用 Rails 5 中的 jsonapi-resources gem 设置多态关联。
我有一个User 模型,它有一个称为profile 的多态关联,它的类型可以是Inspector 或Buyer。以下是截断的模型:
class User < ApplicationRecord
belongs_to :profile, polymorphic: true
end
class Inspector < ApplicationRecord
belongs_to :user
end
class Buyer < ApplicationRecord
belongs_to :user
end
在users表中,有对应的profile_id和profile_type字段表示与inspectors和buyers的多态关联。这一切都在我们当前的 Rails 设置中按预期工作,但在尝试使用 jsonapi-resources 为 JSON:API 设置它时遇到错误。
现在对应的jsonapi-resources资源和控制器(根据指示):
class Api::V1::Mobile::UserResource < JSONAPI::Resource
immutable
attributes :name, :email
has_one :profile, polymorphic: true
end
class Api::V1::Mobile::ProfileResource < JSONAPI::Resource
end
class Api::V1::Mobile::ProfilesController < Api::V1::Mobile::BaseController
end
据我所知,现在一切都应正确设置,但在到达端点时出现以下错误:
"exception": "undefined method `collect' for nil:NilClass",
"backtrace": [
".rvm/gems/ruby-2.6.5/gems/jsonapi-resources-0.10.2/lib/jsonapi/relationship.rb:77:in `resource_types'",
当挖掘堆栈跟踪中提到的relationship.rb 时,它看起来无法解析多态类型,所以我尝试了以下操作:
class Api::V1::Mobile::UserResource < JSONAPI::Resource
immutable
attributes :name, :email
has_one :profile, polymorphic: true, polymorphic_types: ['inspector', 'buyer']
end
但是,唉,另一个错误:Can't join 'User' to association named 'inspector'; perhaps you misspelled it?
在此先感谢您在获取此设置方面的任何帮助!
【问题讨论】:
标签: ruby-on-rails json-api jsonapi-resources