2017-05-27 53 views
0

我試圖複製email屬性User使用後創建,但在日誌中我得到一個錯誤。如何在rails中複製另一個模型的屬性?

,我試圖方法是:

class Car < ActiveRecord::Base 
    belongs_to :user 
    attr_accessible :email, :engine 

    after_create :get_email 

    def get_email 
    email = user.email.dup 
    end 
end 

有人能抽出一個暗示?

+0

請發佈您的錯誤日誌。 – Gerry

+0

好的,只是片刻 – daniel

+0

抱歉沒有顯示錯誤,但沒有複製屬性 – daniel

回答

0

有兩件事情在你的代碼丟失:

  1. self被設定值email需要。
  2. 對象需要在設置email後進行保存。

因此,增加selfsave後,您get_email方法應該是這樣的:也dup已被刪除

def get_email 
    self.email = user.email 
    save 
end 

注意,因爲它不需要複製的值(約更多信息duphere)。


這麼說,我建議使用before_create行動,而不是after_create

class Car < ActiveRecord::Base 
    belongs_to :user 
    attr_accessible :email, :engine 

    before_create :get_email 

    def get_email 
    self.email = user.email 
    end 
end 

隨着:before_crete將複製從Useremail,只需要保存你的對象一次。如果您使用:after_create,首先保存該對象,然後查找User中的email,然後需要再執行一次update(即再次保存)。

+0

好的,格里,謝謝。我會嘗試 – daniel

+0

謝謝格里!但我不知道爲什麼電子郵件仍然爲零,這封電子郵件是我試圖從用戶電子郵件中複製的汽車電子郵件 – daniel

+0

好吧,所以您想從相關的用戶名複製'email'並將其保存在當前'Car'對象中的'email'屬性? – Gerry

相關問題