如何 return GraphQL 中的 ActiveRecord 关系 (Rails)?
How to return ActiveRecord Relation in GraphQL (Rails)?
GraphQL 查询可以直接定义您是否搜索记录,例如按其 ID 或确切值(在我的例子中是日期)。
我的查询应该返回的不是一个 ActiveRecord 对象,而是 ActiveRecord 关系。如何将其定义为可被 GraphQL 使用?
field :file_data, !FileDataType, " Returns records based on given date: format 'yyyy-mm-dd hh:mm:ss'" do
argument :created_on, !types.String, "format 'yyyy-mm-dd hh:mm:ss'"
resolve -> (obj, args, context) do
FileData.where("created_on > ?", args["created_on"])
end
end
它适用于一个对象:如果我添加关系 'last':
FileData.where("created_on > ?", args["created_on"]).last
对于许多结果,我在 rails 控制台中收到错误:
NoMethodError(未定义方法 `attribute_name' [任何已定义和请求的] FileData::ActiveRecord_Relation:..>
如有任何建议,我将不胜感激。
使用列表类型返回多个对象:
field :file_data, types[FileDataType] do
...
end
types[...]
定义列表类型。
GraphQL 查询可以直接定义您是否搜索记录,例如按其 ID 或确切值(在我的例子中是日期)。
我的查询应该返回的不是一个 ActiveRecord 对象,而是 ActiveRecord 关系。如何将其定义为可被 GraphQL 使用?
field :file_data, !FileDataType, " Returns records based on given date: format 'yyyy-mm-dd hh:mm:ss'" do
argument :created_on, !types.String, "format 'yyyy-mm-dd hh:mm:ss'"
resolve -> (obj, args, context) do
FileData.where("created_on > ?", args["created_on"])
end
end
它适用于一个对象:如果我添加关系 'last':
FileData.where("created_on > ?", args["created_on"]).last
对于许多结果,我在 rails 控制台中收到错误:
NoMethodError(未定义方法 `attribute_name' [任何已定义和请求的] FileData::ActiveRecord_Relation:..>
如有任何建议,我将不胜感激。
使用列表类型返回多个对象:
field :file_data, types[FileDataType] do
...
end
types[...]
定义列表类型。