2014-07-18 25 views
0

我有一套遺留數據庫表,我不能規範化出本來應該做的事情。例如一個有200列的大桌子。ruby​​ serialise一個模型來表示在

我正在構建一個API,並希望以更好的狀態向消費者表示此數據,並且可能在稍後階段解決數據庫問題,但有許多後端系統對數據進行回覆,並且更改不是簡單。

我想用Active Record來表示當前的數據庫模式,但是執行一個模型轉換到一個新的模型中,該模型將僅用於作爲json數據的API消費者的演示。

當前數據庫架構: 產品表(200列)

新型號: 產品 +定價 +資產 +位置 +供應商

我可以硬編碼在JSON字符串模板,但覺得這不會是一個非常糟糕的方法。 你會推薦什麼方法或寶石來解決這個問題?

我已經看過: Rabl的 ::加載ActiveModel串行器

回答

1

如果定義了as_json方法返回的哈希,ActiveRecord的會照顧系列化的爲您服務。例如。

class Product < ActiveRecord::Base 
    def as_json options = {} 
    { 
     product: <product value>, 
     pricing: <pricing value>, 
     # ... etc. 
    } 
    end 
end 

現在你可以這樣做:

render json: @model 
+0

感謝:

> Product.first.to_json => "{\"product\":<product_value> ... }" 

你甚至可以通過使這些從控制器JSON!我試圖過度複雜化使用某種序列化框架工作的問題。 – theog

相關問題