Rails: последовательность выполнения метода модели - PullRequest
0 голосов
/ 07 апреля 2009

У меня проблема с моей моделью. Я хочу, чтобы метод использовал другое свойство модели, но перед его использованием я хочу, чтобы другой метод был выполнен (чтобы свойство имело значение). Вот пример:

 def medthod_one=(val)
   self.value = val
 end

 def method_two
   self.second_value = self.value / 2 #just for example
 end

Итак, в моем случае self.second_value недопустимо, поскольку self.value еще не установлено. Как изменить последовательность выполнения этих методов после отправки формы создания для этой модели?

Ответы [ 3 ]

3 голосов
/ 07 апреля 2009

Трудно придумать элегантное решение, когда вы предоставляете только примеры foo-bar вместо реального кода, но мои догадки говорят мне, что вы, вероятно, хотите что-то вроде этого:

def som_setter=(val)
  self.value = val
end

def method_two
  return unless self.value
  # perform calculations with 'self.value'.
end
1 голос
/ 07 апреля 2009

Я не уверен, что следую вашему вопросу, но, возможно, поможет обратный вызов активных записей. http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

Я думаю, что вам, возможно, придется перефразировать этот вопрос.

1 голос
/ 07 апреля 2009

Почему бы вам не сделать это:

def method_one=(val)
  self.value = val
  self.second_value = val / 2
end

С другой стороны, если second_value всегда зависит от self.value, вы можете реализовать его как свойство только для чтения:

def second_value
  self.value / 2
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...