如何在Rails中为多个模型提供相同的方法?

Tim*_* T. 2 methods ruby-on-rails

对于一个名为Email.rb的模型,我有一个名为new_todos的方法.

需要为Call.rb,Postalcard.rb等提供相同的方法.

不是在多个Active Records模型中剪切和粘贴这个精确的片段,而是如何只将其编写一次并将其提供给相应的模型?

我怀疑它可以通过将一个模块放在/ 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
Run Code Online (Sandbox Code Playgroud)

mar*_*ark 6

如您所说,您可以创建一个模块并将其包含在您需要的位置.

#lib/todo_extension.rb

module TodoExtension

  def new_todos
    ...
  end

end

# call.rb, postalcard.rb...
  include TodoExtension
Run Code Online (Sandbox Code Playgroud)