Ruby on rails 在Rails应用程序中,我在哪里放置了将不同JSON字符串展平为类友好格式的功能?

Ruby on rails 在Rails应用程序中,我在哪里放置了将不同JSON字符串展平为类友好格式的功能?,ruby-on-rails,ruby,Ruby On Rails,Ruby,例如,这些json结构需要转换为以下类: JSON_str_1 = {"a":"stuff", "b":{"aa": "more_stuff", "bb":"even_more"}} JSON_str_2 = {"a": "stuff", "aa": "more_stuff","b": {"bb":"even_more"}} JSON_str_3 = {"b": {"a":"stuff" "aa": "more_stuff", "bb":"even_more"}} 对于此格式的类: class

例如,这些json结构需要转换为以下类:

JSON_str_1 = {"a":"stuff", "b":{"aa": "more_stuff", "bb":"even_more"}}
JSON_str_2 = {"a": "stuff", "aa": "more_stuff","b": {"bb":"even_more"}}
JSON_str_3 = {"b": {"a":"stuff" "aa": "more_stuff", "bb":"even_more"}}
对于此格式的类:

class my_class < ActiveRecord
   attr_accessor: :a, :aa, :bb
end
class my\u class
我需要编码的所有信息都是相同的,只是结构不同。 这基本上涉及到对json结构的扁平化。
你会怎么处理呢? 在Rails应用程序中,可以将转换功能放在哪里?模型?控制器?什么地方有波洛


我有很多这种从未优化的JSON到特定于类的格式的转换,这似乎是一个非常常见的问题。

我将从模型中的一个方法开始:

def self.from_json(json)
  new(a: json['a'], aa: json['a']['aa'], bb: json['a']['bb'])
end
我们可以称之为:

foo = MyClass.from_json(JSON_str)

这个json来自哪里?在请求中?我想这应该属于模型。@Nomanurehman:是的,从请求中。它只针对一条路线。另一条路线可能具有相同信息的不同格式,这些信息也必须转换为该模型。这就是为什么我想知道在调用模型之前是否应该在控制器中转换。或者制作一个转换类。只是不知道该怎么办。@Cthulhu:我在想,但可能有一系列不同的JSON字符串编码相同的信息,这些信息都必须转换为该模型的格式。这就像每个JSON转换需要一个方法。我的直觉是一个转换器混合。如果有不同的格式需要转换呢?您会为每次转换添加一个类吗?或者你会在某个时候把它分解出来吗?一旦有两种以上不同的格式,或者如果这种格式比你的示例更复杂,我会生成一个转换器类。但我会尽量把所有东西都放在一个类中,只要它有意义、可维护和可理解。但所有示例都遵循相同的模式,并且结构非常简单。像这样的小助手方法仍然可以解决这个问题。一个类方法和一个助手方法是否可以证明一个类是独立的?我想说,这取决于这个类是可重用的,还是只在一个地方使用它来生成一个特定类的实例。