Как добавить несколько значений в один столбец с помощью консоли rails - PullRequest
0 голосов
/ 22 мая 2019

Небольшой вопрос о рельсах консоли.Я использую Ruby 2.6.0, Rails 5.2.3.Я создал таблицу countries и таблицу users.

Я использую has_and_belongs_to_many :users в модели Country и has_and_belongs_to_many :countries в модели User.Я также создал таблицу country_users, следуя указаниям .Я хочу сделать несколько значений для country_id в таблице users.Я думаю, что речь идет о добавлении массива в один столбец.

У меня уже есть две записи в таблице users.Я хочу знать, как я могу использовать rails c для добавления дополнительных значений к столбцу country_id в таблице users.

Пример: две записи, которые у меня были в users таблице:

    <User id: 1, email: "test01@france.com", created_at: "2019-05-21 12:36:08", updated_at: "2019-05-21 12:49:08",countryid: 1, regionid: 1>
    <User id: 2, email: "test02@france.com", created_at: "2019-05-21 12:36:18", updated_at: "2019-05-21 12:49:28",countryid: 2, regionid: 2>

Как добавить '2' в столбец country_id для первого пользователя через консоль?

1 Ответ

1 голос
/ 22 мая 2019

Вы неправильно понимаете, как отношения хранятся в вашей базе данных.

Если вы назначаете объекту parent_id, в вашем случае идентификатор страны, он может иметь только один из них, то есть может 'не может использоваться для отношений has_and_belongs_to_many.

Вы говорите, что создали таблицу соединения, которая должна называться country_users (или user_countries).Каждая из этих записей будет иметь идентификатор страны и идентификатор пользователя, который устанавливает связь между этими двумя записями.Если вы хотите установить такие отношения в консоли, попробуйте:

country = Country.find(2)
user = User.find(1)
user.countries << country

Это создаст новую запись в вашей таблице присоединения, с идентификатором пользователя 1 и идентификатором страны 2, и означает, что когдаВы звоните user.countries, в него будет включен только что назначенный номер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...