2014-03-25 3 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. Different чем @user_id, и/или так как это помечено Rails ...
  2. ... отличается каталлоге «raw» через любой базовый механизм, такой как attributes[sym], минуя сгенерированные или ваши собственные аксессоры.

Это Значительное разница? Это действительно зависит. Ставка самая безопасная ставка заключается в том, чтобы префикс сохраняемых полевых аксессуаров с self, чтобы убедиться, что вы получаете то, что, по вашему мнению, есть, особенно если вы переопределите любой из этих аксессуаров.

Я не всегда делаю это, когда это не задание, но существует связанный с ним риск.

0

.self относится к объекту, к которому он обращается.

+0

Приветствия! Не ссылается ли он автоматически на объект по умолчанию - поскольку код написан в модели Event.rb? – user3399101

+0

@ user3399101 Да. Но вы должны убедиться, что вы называете метод, который вы на самом деле считаете собой, поэтому я прокомментировал сохраняемые атрибуты. –

+0

Понял, спасибо. +1 – user3399101

3

self относится к текущему экземпляру модели. Это используется для метода вызова и атрибутов для текущей модели.

Смежные вопросы