如何在GraphQL(Rails)中返回ActiveRecord关系?

时间:2017-02-10 20:56:00

标签: ruby-on-rails graphql

如果您搜索记录,可以直接定义GraphQL查询,例如通过其id或精确值(在我的情况下为日期)。

我的查询应该返回的不是一个ActiveRecord对象而是ActiveRecord Relation。如何将它定义为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(FileData :: ActiveRecord_Relation的未定义方法`attribute_name'[任何已定义和已请求]:..>

我很感激任何建议。

1 个答案:

答案 0 :(得分:3)

使用列表类型返回多个对象:

field :file_data, types[FileDataType] do
  ...
end

types[...]定义了一个列表类型。