如何在Rails模型中克隆單個屬性?這不起作用:如何克隆Rails模型屬性?
irb(main):309:0> u.reload
=> #<User id: 1, username: "starrychloe", ...
irb(main):310:0> u2 = u.dup
=> #<User id: nil, username: "starrychloe", ...
irb(main):311:0> u2 = u.clone
=> #<User id: 1, username: "starrychloe", ...
irb(main):312:0> u2.username = u.username.clone
=> "starrychloe"
irb(main):313:0> u2.username = 'star'
=> "star"
irb(main):314:0> u.username ############ Changes original
=> "star"
也不是這:
irb(main):320:0> u.reload
=> #<User id: 1, username: "starrychloe", ...
irb(main):321:0> u2 = u.clone
=> #<User id: 1, username: "starrychloe", ...
irb(main):322:0> u2[:username] = u[:username].clone
=> "starrychloe"
irb(main):323:0> u2.username = 'cow'
=> "cow"
irb(main):324:0> u.username ############ Changes original
=> "cow"
#dup
不會複製ID,並#clone
的屬性保持參照相同的字符串。 This不會解決我的問題。
使用'dup'工程,不應該改變你原來的實例屬性。我已經在Rails 4和Ruby 2上測試過了。'dup'不會複製id,因爲它初始化實例的一個新副本,因此不會是db中的同一個對象。 –