2016-10-10 13 views
0

email_messagesというテーブルがあります。私は列がfrom,to,cc,bccです。現時点では、テキストフィールドとして格納されています。テキストフィールドには、シリアル化された電子メールアドレスの配列が含まれています。しかし、私は自分のテーブルにアドレスを抽出したいので、アドレスを再利用して、先読みしてアドレスを簡単に検索できるようにします。レコードの個々のフィールドとの多対多の関係

明らかに、私は多くのものが必要です。しかし、私はこれを行う場合:

class EmailMessage 
    has_many :email_message_addresses 
    has_many :addresses, through: :email_message_addresses 
end 

class Address 
    has_many :email_message_addresses 
    has_many :email_messages, through: :email_message_addresses 
end 

をどのように私は、ccto、単一レコードのフィールドbcc個々のfromのアドレスを関連付けることができるだろうか?などfromフィールド3つのアドレスを含めることができ、toフィールドは5つのアドレスを含めることができ、

答えて

0

email_message_addressesに属性を追加し、値fromを取ることができるroleを、と呼ばれる、toなど

おそらく勧めしますあなたは、各EmailMessageのため

@message = EmailMessage.find(...) 
@message.to_addresses # -> array of addresses in the "to" field 
@message.cc_addresses # -> array of addresses in the "cc" field 
# etc. 
+0

だから、次の構文を行うことができるようにいくつかのメソッドを追加するために、(、からCCに、BCC)4 EmailMessageAddressがあるでしょう、そして各EmailMessageAddressのために、一つまたは多くのアドレスが存在します? – Donato

+0

いいえ。[From]フィールドに1人、 'to'フィールドに2人、 'cc'に3人、bccに '4'というメッセージがある場合、EmailMessageAddressテーブルに1つのエントリがあります。 + 2 + 3 + 4)。 –