我試圖在一個易於閱讀的格式化代碼中列出一堆列。我知道我可能只是這樣做:Rails更新基於數組的多列
@user = User.find(3)
@user.column1 = nil
@user.column2 = nil
@user.column3 = nil
etc...
但是這似乎並不像一個很紅寶石的方式做的事情,也不是特別乾淨閱讀。
我試圖弄清楚爲什麼我不能只是做一個「每個做」數組是這樣的:
columns = [ "key", "provider", "uid", "access_code",
"customer_id", "cc_id", "cc_brand", "cc_last4",
"cc_expiration", "last_payment_id", "last_payment_date",
"last_payment_amount" ]
columns.each do |record|
@user.record = nil
end
@user.save
我收到以下錯誤:
undefined method `record=' for #<User:0x00000003a91d18>
我知道類似的問題之前已經被問過,但他們通常與更新一堆不同的表格有關。我只對用戶表感興趣。
此外,還有很多答案鏈接到http://apidock.com/rails/ActiveRecord/Base/update_all/class。但是,這是一箇舊的棄用方法,顯然繞過回調。這似乎相當危險。
任何人都可以想到爲什麼一個簡單的'每做'數組將無法正常工作?
哇!快速有效的答案。這工作完美。謝謝!! – BoomShadow
當然,爲了解決這樣的問題,提出了「發送」函數,你試圖做的是爲@user調用名爲record的記錄函數,而不是調用你想要的函數名稱,這就是爲什麼它沒有爲這個對象引發任何稱爲記錄的函數,如果你想獲得屬性的值,你也可以調用@ user.send(record) –