rails 练习5--将Topic与Votes做关联
来源:互联网 发布:minix3.3.0源码下载 编辑:程序博客网 时间:2024/05/17 06:02
目标
上图解释了topic与它的votes之间的关联。在本章节,我们将会把这二个Model之间的关联实作出来
步骤
步骤1:设定Model Topic里与Vote的关联
编辑app/models/topic.rb让它看起来像下面代码:
class Topic < ApplicationRecord has_many :votes, dependent: :destroyend
步骤2:设定Model Vote里与Topic的关联
编辑app/models/vote.rb让它看起来像下面代码:
class Vote < ApplicationRecord belongs_to :topicend
步骤3:在Rails console把玩一下Topics与Votes
首先,确认你已经建了至少一笔的topic数据
然后在终端机(位于Rails项目文件夹位置下)输入:
rails c
在Rails Console模式下,尝试下面这些操作
秀出总共有多少Topic篇数:
Topic.count
用变数来定义第一篇Topic
my_topic = Topic.first
可以把my_topic用其他任何名称代替,不过我们会用这名称来让下面操作更显得易懂
修改 title 的內容:
my_topic.update_attributes(title: 'Edited in the console')
增加一张投票数:
my_topic.votes.create
秀出总共有多少投票数
my_topic.votes.count
移除一个投票数
my_topic.votes.first.destroy
下面的附表列出你可以使用的Model classes方法(像是Topic and Vote),以及跟前者有些不同的Model instances方法(像是刚刚操作的my_topic等指令)。my_topic.votes这个指令是属于association分类,其方法跟Model classes雷同
解说
has_many与belongs_to:
- 在Rails里,二个Model设定之间的关系称之为『Associations』(关联)
- Associations(通常)都是成对的,意思是有has,就有belongs
- Topic会有很多的votes,所以我们在topic model里面放入has_many:votes
- 当你跟topic instance呼叫它所拥有的votes,会得到所有该topic的votes(用array包起来的)
- 某一个vote是属于特定topic的一部份,所以我们在vote model放入belongs_to:topic
-
- 当你跟vote instance呼叫它所属于的topic,就会得到该topic instance的数据
has_many:votes后面接出来的dependent::destroy很重要!代表该topic instance被删除时,它所拥有的votes也会一并删掉。如果没有dependent::destroy这个设定,那些votes的数据将永远存在数据库里面,变成孤儿数据(因为找不到它所属于的topic)
- rails 练习5--将Topic与Votes做关联
- rails 练习4 --对文章做投票
- Rails宝典之第三式: 通过关联做查询
- rails 练习8 --将文章标题变成连接
- Rails关联笔记学习
- rails 关联查询
- rails中的多态表关联
- 用GibbsLDA做Topic Modeling
- 如何将svn与Android Studio关联和取消关联
- 将自己的程序与文件关联
- iOS 将应用与文件关联起来
- eclipse 将jar与源码关联
- 将本地文件与github远程库关联
- 如何将xib与一个控制器关联
- 如何将dockerhub与github关联
- 如何将dockerhub与github关联
- Topic Model 与 LDA
- Queue与Topic区别
- extjs初学者教程
- friend class className
- mysql 性能
- ab 模拟测试秒杀存在的问题
- 第二十一篇玩转【斗鱼直播APP】系列之加载数据动画
- rails 练习5--将Topic与Votes做关联
- Python: 图像处理的基本运算
- 安卓RecyclerView与DrawerLayout的简单应用
- Android MVC模式与MVP模式
- python之yield(二)
- 让form只提交不跳转的两种方法总结
- java中怎么折叠代码
- Araxis Merge基本配置及操作
- 什么时候使用Controller、Service、Directive