在GraphQL (Rails)中返回ActiveRecord关系,可以通过以下步骤实现:
graphql-ruby
gem来实现GraphQL功能。GraphQL::ObjectType
来定义类型。例如,假设你有一个名为User
的ActiveRecord模型,你可以创建一个名为UserType
的GraphQL类型来表示它。# app/graphql/types/user_type.rb
module Types
class UserType < GraphQL::Schema::Object
field :id, ID, null: false
field :name, String, null: false
# 其他字段...
field :posts, [Types::PostType], null: true
def posts
object.posts
end
end
end
在上面的代码中,我们定义了一个posts
字段,它返回一个[Types::PostType]
类型的数组。posts
方法定义了如何从User
对象中获取相关的Post
对象。
user
,你可以在查询中指定你想要返回的User
对象的字段和关系。# app/graphql/types/query_type.rb
module Types
class QueryType < GraphQL::Schema::Object
field :user, UserType, null: true do
argument :id, ID, required: true
end
def user(id:)
User.find(id)
end
end
end
在上面的代码中,我们定义了一个user
字段,它接受一个id
参数,并返回一个UserType
类型的对象。user
方法从数据库中查找并返回相应的User
对象。
# app/graphql/schema.rb
class Schema < GraphQL::Schema
query Types::QueryType
end
在上面的代码中,我们将Types::QueryType
与根查询字段关联起来。
现在,你可以使用GraphQL查询来获取User
对象及其关系。例如,你可以使用以下查询来获取用户及其帖子:
query {
user(id: 1) {
id
name
posts {
id
title
# 其他字段...
}
}
}
这将返回具有用户信息和用户的帖子信息的JSON响应。
对于腾讯云相关产品和产品介绍链接地址,可以根据具体需求选择适合的云计算产品,例如云服务器、云数据库、云存储等。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云