User
とEmail
の2つのモデルがあります。明らかなように、ユーザーにはsender
とrecipient
というメールが届きます。Rails列と整数配列
は、アソシエーションを取得しています方法ですUser
モデル
has_many :sent_emails, class_name: "Email", foreign_key: "sender_id"
has_many :received_emails, class_name: "Email", foreign_key: "recipient_id"
とEmail
モデルで
belongs_to :sender, class_name: "User", primary_key: "id"
belongs_to :recipient, class_name: "User", primary_key: "id"
では、それのは情報だけのためだった、問題がある:私はcc
とbcc
として他の2つの列を持っていますas
add_column :emails, :cc, :integer, default: [], array: true
add_column :emails, :bcc, :integer, default: [], array: true
これらの列でも電子メールとユーザーとの関連付けを行いたいと思います。
=> #<Email id: nil, sender_id: 5, recipient_id: 10, body: "Hello its first email.", subject: "Hello Hello", state: 1, head: nil, tail: nil, created_at: nil, updated_at: nil, cc: [9, 8], bcc: [4,19]>
、私が追加した場合ように、私は私がユーザーを取得することができます
Email.first.cc
か
Email.first.bcc
を行うことができるように、私は、ユーザーを取得することができます
Email.first.sender
または
Email.first.recipient
を行うことができたよう。
User.first.sent_emails
とUser.first.received_emails
のように、私はUser.first.cc_mails
またはUser.first.bcc_mails
を得ることができますか?
このような関連付けが可能ですか?
なぜ1対多テーブルではなく、pg配列を使用するのですか? –
どのように?私はそれをどうやって考えていないのですか? –
実際には1つのメールに多くのCCまたはBCCが存在することになりますが、 –