【发布时间】:2021-02-10 22:49:27
【问题描述】:
我有一个 GraphQL 枚举,例如:
class MediaFilterType < Types::BaseEnum
value "TWITTER", value: :twitter
value "FACEBOOK", value: :facebook
value "YOUTUBE", value: :youtube
end
还有一个接收此类型数组或 nil 的字段。实际上,当我们收到 nil 时,我们应该传递我们将使用枚举中的所有可用值:
def dashboard(media_types: nil)
if media_type.nil?
# Here is the problem below
media_types = MediaFilterType.values.values.map(&:value)
end
...
DashboardQuery.new(media_types).call
end
所以我必须对每个字段进行这种有条件的清理,就像仪表板字段一样。没什么大不了的,除了重复。但我认为这是一个应该在 Query 内部的责任(有一个协作者可以在 Query 对象内部进行清理)。但我认为从业务对象内的 GQL 枚举类型中提取值会更糟。实际上我什至不知道我是否应该提取这些枚举值。
这样从 GQL 类型中提取值是一种好习惯吗?
- 如果没问题,还有另一种方法可以在业务对象(如查询对象或消毒剂)中使用枚举值,而不让它们依赖于 GQL 枚举类型? 我应该在业务层中创建一个具有相同值的 Enum 吗?
感谢任何帮助。
【问题讨论】:
标签: ruby-on-rails ruby enums graphql graphql-ruby