相关疑难解决方法(0)

在Rails中创建多对多关系

这是我想要实现的一个简化示例,我对Rails相对较新,并且正在努力解决模型之间的关系问题.

我有两个模型,User模型和Category模型.用户可以与许多类别相关联.对于许多用户,特定类别可以出现在类别列表中.如果删除了特定类别,则应将其反映在用户的类别列表中.

在这个例子中:

我的Categories表包含五个类别:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| ID | Name                       |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1  | Sports                     | 
| 2  | News                       |
| 3  | Entertainment              |
| 4  | Technology                 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我的Users表包含两个用户:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| ID | Name                       |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1  | UserA                      | 
| 2  | UserB                      |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

UserA可以选择体育和科技作为他的类别

UserB可以选择新闻,体育和娱乐

删除了体育类别,UserA和UserB类别列表都反映了删除

我玩弄了一个创建一个UserCategories表,其中包含类别和用户的ID.这样的工作,我可以查找类别名称,但我无法得到级联删除工作,整个解决方案似乎错了.

使用我发现的belongs_to和has_many函数的例子似乎讨论了映射一对一的关系.例如,对博客文章的评论.

  • 你如何使用内置的Rails功能来表示这种多对多的关系?
  • 在使用Rails时,在两者之间使用单独的表是可行的解决方案吗?

ruby-on-rails

65
推荐指数
3
解决办法
6万
查看次数

ActiveRecord :: Migration的create_join_table的行为是什么?

我发现了一种在我的Rails应用程序中为HABTM关系生成连接表的好方法.

rails g migration CreateJoinTable table1 table2
Run Code Online (Sandbox Code Playgroud)

这会生成一个ActiveRecord::Migration采用该方法的方法create_join_table

我想知道这个奇妙的神秘方法是做什么的.我猜它会使一个表(可能没有id字段)有一个table1外键列和一个table2外键列,但该表是否还有其他功能?我对连接表的习惯一直是在这两列中添加唯一索引,以便table1中的记录和table2中的记录之间的关系不能输入两次.

我的问题归结为:如果我使用create_join_table,我需要继续添加该唯一索引,或者这种方法是否适合我(我认为它应该)?

我通常看文档并没有涉及这种细节.

activerecord ruby-on-rails jointable

9
推荐指数
2
解决办法
4684
查看次数

标签 统计

ruby-on-rails ×2

activerecord ×1

jointable ×1