Как сделать один и тот же метод доступным для нескольких моделей в Rails? - PullRequest
2 голосов
/ 07 ноября 2010

Для одной модели с именем Email.rb у меня есть метод, показанный ниже, который называется new_todos.

Этот же метод должен быть доступен для Call.rb, Postalcard.rb, и так далее.

Вместо того, чтобы вырезать и вставить этот точный фрагмент в несколько моделей активных записей, как я могу записать его только один раз и сделать доступным для соответствующих моделей?

Я подозреваю, что это может сработать, если поместить модуль вПапка / lib, но я не совсем уверен .... спасибо!

  def new_todos

    Contact.campaign_id_is(self.campaign_id).each do |contact|

      todo = Todo.new

      todo.contact_id = contact.id
      todo.user_id = contact.user_id
      todo.asset = self.class.name
      todo.asset_id = self.id
      todo.original_date = contact.date_entered + self.days.days
      todo.current_date = todo.original_date
      todo.save

    end

  end

1 Ответ

6 голосов
/ 07 ноября 2010

Как вы говорите, вы можете создать модуль и включать его там, где вам нужно.

#lib/todo_extension.rb

module TodoExtension

  def new_todos
    ...
  end

end

# call.rb, postalcard.rb...
  include TodoExtension
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...