3
更新模型值
我不能找到一種方法來合併這兩條線在我的Ruby代碼:Ruby代碼中JSON
def as_json(options={})
super(options).merge ({ :id => self.id.upcase }) # upcase id
super(options).reject { |k, v| v.nil? } # reject nil values
end
如何管理merge
和super
reject
?
編輯:什麼超級(選項)的示例返回:
{ 「ID」=> 「6ea8db7f-18a8-422d-9510-5b615883ed7c」, 「USER_ID」=> 1, 「CONTACT_ID」 =>零, 「producer_id」=>無}
問題是當contact_id
或producer_id
是nil
。
super(options).reject { |_k, v| v.nil? }.merge(id: id.upcase, contact_id: contact_id.upcase, producer_id: producer_id.upcase)
編輯2:這是工作,但它非常難看
super(options).merge(id: id.upcase, contact_id: contact_id ? contact_id.upcase : nil, producer_id: producer_id ? producer_id.upcase : nil).reject { |_k, v| v.nil? }
感謝安德烈!而你的第二個代碼很好,很好的解釋。奇蹟般有效。 –
你爲什麼選擇'_k'而不是'_'?一般來說,我看到這寫成'reject {| _,v | ...} – engineersmnky
@engineersmnky我認爲這是一個品味問題。在這個特殊的(簡單的)情況下,兩者對我來說同樣適用,但是當處理更復雜/更有意義的哈希值時,我用全名稱調用我的塊變量,而對於未使用的哈希,我使用'_variable',而不是'_',因爲它可以幫助我在將來更快地閱讀和記住代碼:) –