很多運氣近來在回答#1(我覺得我的風滾草獎之王),但在這裏不用反正:Rails的更新只空字段
如何更新只能是空場使用activeRecord時?我有這樣的代碼:
master_info.update_attributes({:originalTitle => slave_info.originalTitle,
:starring => slave_info.starring,
:theatrical => slave_info.theatrical }
,並想是這樣的:
master_info.update_attributes({:originalTitle => slave_info.originalTitle, if !master_info.originalTitle.present?
:starring => slave_info.starring, if !master_info.starring.present?
:theatrical => slave_info.theatrical if !master_info.theatrical.present? }
我能做到這一條線的時間,但我想避免:
master_info.update_attributes(:originalTitle => slave_info.originalTitle) if !master_info.originalTitle.present?
我看起來像這樣:
master_info.update_attributes({:originalTitle => slave_info.originalTitle,
:starring => slave_info.starring,
:theatrical => slave_info.theatrical }.reject{ |key, value| value.present?})
但是,這不起作用,它不會更新任何內容,甚至不會出現空白字段。
實際上,最理想的是不必重複字段名稱,因爲它們在主控和從屬中都被命名爲相同,但我無法在activeRecord上執行.each。但這是第二個問題,主要是更新空字段。
在這裏我們希望這一次沒有得到一個滾草:)
如果你想保持原來的更新方式,你應該定義另一種方法,而不是重載。 – ksol 2012-02-08 16:18:43
對不起,我不明白。如果在接收端爲空,我想更新這些屬性。這段代碼看起來像是從傳入字段中刪除空的屬性。還是我讀錯了? – kakubei 2012-02-08 16:23:16
對不起,我改爲'除非read_attribute(attr).empty?'。 – 2012-02-08 16:56:12