关于Rails控制台的一个小问题。我正在使用Ruby 2.6.0,Rails 5.2.3。我创建了一个countries
表和一个users
表。
我在国家(地区)模型中使用has_and_belongs_to_many :users
在用户模型中使用has_and_belongs_to_many :countries
。我还在guide之后创建了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>
如何通过控制台为第一位用户在country_id
列中添加“ 2”?
答案 0 :(得分:1)
您误解了关系如何存储在数据库中。
如果您为一个对象分配一个parent_id(在您的情况下是一个国家/地区ID),则该对象只能有其中一个,这意味着它不能用于“ has_and_belongs_to_many”关系。
您说您已经建立了一个联接表,该表应称为country_users(或user_countries)。这些记录中的每一个都将具有国家/地区ID和用户ID,以在这两个记录之间建立链接。如果要在控制台中建立这样的关系,请尝试:
country = Country.find(2)
user = User.find(1)
user.countries << country
这将在联接表中创建一条新记录,用户ID为1,国家ID为2,意味着当您致电user.countries
时,它将包括刚刚分配的记录。