2014-03-25 73 views
0

所以,我正在進行一個項目,我不知道是什麼。確實在這方面:在這種情況下,自己做了什麼?

def owner_is?(user) 
    self.user_id == user.id 
    end 

我明白高清self.method做什麼,因爲它是一個類的方法,但它不是如何上面使用。

爲什麼有人會像上面的上下文一樣使用self.user_id,那是幹什麼的?我的猜測是,自我指的是current_user?

請幫我解決這個問題,

謝謝!

回答

1

這將引用該方法被調用的模型實例。

+0

所以在這種情況下,它指的是一個Event對象的實例。因爲它正在使用Event.rb模型進行調用。我想我明白了嗎?乾杯! – user3399101

3

self指的是您正在查看的任何當前實例。

這調用實例的方法user_id,這可能是:

  1. 比@user_id不同的是,和/或因爲這是標記的Rails,...
  2. ...不是屬性訪問不同「原始」通過任何基礎機制,如attributes[sym],繞過生成或您自己的訪問器。

難道是顯着的區別?這真的取決於。下注是將持久字段訪問器加上self作爲前綴,以確保您獲得了自己的想法,尤其是在您覆蓋任何訪問者時。

我不總是這樣做,當它不是一個任務,但有一個相關的風險。

0

.self正在接受它被調用的對象。

+0

乾杯!它不是默認自動引用該對象 - 因爲代碼是用Event.rb模型編寫的? – user3399101

+0

@ user3399101是的。但是你必須確保你正在調用你真正認爲你的方法,這就是爲什麼我評論了持久屬性。 –

+0

瞭解,謝謝。 +1 – user3399101

3

self引用模型的當前實例。它用於當前模型的調用方法和屬性。

相關問題