Duplicate a record and change its attributes in Rails.

情境

小明是一個很懶惰的人,他在操作TODO的Task的時候不想要每次都設定它的Priority,想要可以直接「複製」一個已經設定好Priority的Task出來後修改content就好了。

Task.rb 如下

class Task < ActiveRecord::Base
  attr_accessible :content, :priority
end

實作

在這個情況下,我們該怎樣做比較好呢?

直接看code好了XDDD

(Task.find(targeted_task).dup).update_attributes({ content: task[:content] })

update_attributes是一個很酷的東西,不管你給它的是new record or persisted record,它都可以將資料更改後直接儲存。

那如果只是想要指定attributes但是不想要馬上儲存呢?這時候就要用assign_attributes了,例如 task.assign_attributes(task_params)

Comments

comments powered by Disqus