Как я могу ссылаться на «self» в определении модели?

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Пожалуйста, игнорируйте значение ruby для «self» в моем вопросе.Я имею в виду это стандартным английским способом.

У меня есть модель с именем subscription, и я добавил определение с именем subscribed.

Я хочу сделать что-то вроде:

   def subscribed
    @subscription = Subscription.where(:thread_id => this.thread_id, :user_id => this.user_id)
  end
  

где this относится к текущему экземпляру, а не к какому-либо глобальному классу.

Как мне это сделать?

Ответ №1:

Если вы используете self в тех местах, где вы написали this (или просто вообще не используете), это будет ссылаться на текущий экземпляр, а не на «какой-то глобальный класс».

Комментарии:

1. Я думаю, что под «текущим экземпляром» он подразумевает «объект подписки, который в данный момент проверяется where методом».

2. @Chuck: я не могу себе представить, что он имел в виду. Если бы он это сделал, :thread_id => this.thread_id, :user_id => this.user_id не имело бы никакого смысла.

3. Честно говоря, для меня это не имело большого смысла в любом случае. Казалось, это было то, что он пытался указать, сказав «Игнорировать значение Ruby self » .

Ответ №2:

Просто используйте имена полей, и это должно работать

 def subscribed
  @subscription = Subscription.where(:thread_id => thread_id, :user_id => user_id)
end