什么是处理轨道上红宝石中多对多关系的最简洁方法?

时间:2010-07-23 10:50:59

标签: ruby-on-rails database data-modeling

我有一个模型说用户,可以住在多个城镇(表示为另一个模型)。如果我创建一个新用户,我必须选择(并编辑)他们所居住的不同城镇。由于时间限制,我经常最终得到一个“比我想要的更糟糕”的解决方案,例如:http://blog.hasmanythrough.com/2006/4/20/many-to-many-dance-off

任何受SO欢迎的好解决方案?

...欢呼声

Slothishtype

1 个答案:

答案 0 :(得分:0)

has_and_belongs_to_many关联是针对这种情况而建立的。以下是相关文档:http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many

否则,如果您需要存储关联本身的信息(城市表或用户表中不存在的字段,但介于两者之间),您可能只想设置两个并行的'has_many_through'关联,并设置一个单独的'user_city'表。所以它将在用户表中

has_many :user_cities
has_many :cities, :through => :user_cities

并在城市表中

has_many :user_cities
has_many :users, :through => :user_cities

然后,您只需致电:user.cities,并获取用户所在城市的列表。