2016-07-11 40 views
1

我知道你可以明確列出領域像這樣,有什麼方法可以隱藏Rails Jbuilder模板中的屬性嗎?

json.(model, :field_one, :field_two, :field_three) 

但有什麼類似於以下,

json.(model, except: :field_two) 

這將輸出所有的模型領域,除了一個叫出來?

+1

你試過'json.merge! model.attributes.except(「field_one」,「field_two」)'? – mmichael

+0

@mmichael工作!似乎有一個更簡單的方法... – sambecker

回答

2

嘗試json.merge! model.attributes.except("field_one", "field_two")

1

我做過這樣的事情。 獲取模型的所有所需屬性的數組

model.attributes.keys.map { |key| key.to_sym } - [:field_one, :field_two] 

哪些可以這樣寫

model.attributes.keys.map(&:to_sym) - [:field_one, :field_two] 

然後啪的陣列,同時通過在JBuilder中

json.(model, *(model.attributes.keys.map(&:to_sym) - [:field_one, :field_two])) 
0

對於非ActiveRecord對象此相似的模式工作(軌道4)

json.merge! @some_object.as_json.except("not_this_one") 
相關問題