0

私が電子メールのやり取りを追跡しているとしましょう。問い合わせ(顧客から)や返信(サポーターから)は、両者が対応している注文に埋め込まれています。データベースに入れると、まったく同じロジックを共有します。

私の問題は、同じロジックを使用していても、オブジェクト クラスが異なり、呼び出す必要があるモデル フィールドが異なり、メソッド名も異なることです。

実際に使用する前に、メソッドとオブジェクトの参照をどのように配置すればよいですか? 「string_to_method」メソッドは存在しますか、またはそのようなものですか?

コメント付きのサンプル コード:

class Email
  include Mongoid::Document

  field :from, type: String
  field :to, type: String
  field :subject, type: String

  belongs_to :order, :inverse_of => :emails

  def start
    email = Email.create!(:from => "sender@example.com", :to => "recipient@example.com", :subject => "Hello")

    from_or_to = from                  # This represents the database field from where I later on will fetch the customers email address. It is either from or to.
    enquiries_or_replies = enquiries   # This represents a method that should later be called. It is either enquiries or replies.

    self.test_if_enquiry_or_reply(from_or_to, enquiries_or_replies)
  end

  def test_if_enquiry_or_reply(from_or_to, enquiries_or_replies)
    order = Order.add_enquiry_or_reply(self, from_or_to, enquiries_or_replies)
    self.order = order
    self.save
  end
end

class Order
  include Mongoid::Document

  field :email_address, type: String

  has_many :emails, :inverse_of => :order
  embeds_many :enquiries, :inverse_of => :order
  embeds_many :replies, :inverse_of => :order

  def self.add_enquiry_or_reply(email, from_or_to, enquiries_or_replies)
    order = Order.where(:email_address => email.from_or_to).first  # from_or_to could either be from or to.
    order.enquiries_or_replies.create!(subject: email.subject)     # enquiries_or_replies could either be enquiries or replies.
    order
  end
end
4

2 に答える 2