我有以下哈希即使條件爲真,爲什麼拒絕不在我的哈希上工作?
{"goes_by"=>[nil, ""], "middle_name"=>[nil, ""], "suffix"=>[nil, ""], "jersey"=>["8", "8A"]}
我試圖寫一個聲明,拒絕與零&「」嵌套數組的任何元素。所以我寫了下面的命令,試圖執行這一點,但它返回nil
彷彿有沒有哈希任何改變......
Player.find(286).audits.first.audited_changes.reject! {|x| x[1][0].blank? && x[1][1].blank? }
=> nil
但是當我打印出來的結果的條件爲真三的要素。我在這裏錯過了什麼?
Player.find(286).audits.first.audited_changes.each {|x| puts x[1][0].blank? && x[1][1].blank? }
true
true
true
false
=> {"goes_by"=>[nil, ""], "middle_name"=>[nil, ""], "suffix"=>[nil, ""], "jersey"=>["8", "8A"]}
是否'#audited_changes'構建hash或訪問一個實例變量? – aerook
實例變量,它被存儲爲我理解的記錄的一部分。如果它有助於它成爲審覈的寶石的一部分。 ! – daveomcd
好了,''#reject只會刪除實例變量的元素;它不會在數據庫中做任何更新。您將重新回到數據庫中來驗證操作是否正常,從數據庫中返回一個新的ruby對象。 嘗試保持到播放器實例,並且將其保存在拒絕後: '玩家= Player.find(286)'; 'player.audits.first.audited_changes.reject! {#...}'; 'player.audits.first.save'; – aerook