Лучший способ создать ассоциацию в Rails - PullRequest
0 голосов
/ 10 июня 2011

Я бы хотел, чтобы мои User ассоциировались с конкретными Email, когда они их получают.

Таким образом, я могу посмотреть массив полученных им писем.

Изначально я думал о создании строкового поля для таблицы User и добавлении уникального идентификатора в массив.

User.find(x).received_emails << Email.find(x).id

Но может быть лучший способ сделать это с ассоциированием моделей.

Рекомендации

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

Вы должны проверить эту ссылку:

Руководство по ассоциации Rails

Звучит так, будто вы говорите об одном-о-многом.Если вы используете механизм ассоциации, вы получите все необходимое поведение, в основном бесплатно.

2 голосов
/ 10 июня 2011
class Email < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :received_emails, :class_name => 'Email'
end

User.find(x).received_emails << Email.find(y)

При таком подходе потребуется добавить столбец user_id в таблицу электронной почты.

Возможно, вы захотите изменить это на ассоциацию "многие ко многим", добавив таблицу соединения, например user_emailsмодель UserEmail.Эта таблица будет иметь столбцы user_id и email_id.

...