rails 关联模型
简单的介绍
要了解Rails多态关联,让我们对Rails Active Record有所了解。 什么是Rails Active Record?
Rails Active Record是MVC体系结构框架中的M。 模型是负责表示业务逻辑和数据的系统层。 Active Record促进了业务对象的创建和使用,这些业务对象的数据需要持久存储到数据库中。
它是活动记录模式的实现,活动记录模式本身是对象关系映射系统的描述。
多态关联是一个Active Record关联,可以将一个模型连接到多个其他模型。 例如; 我们可以使用单个关联将Post模型与Comment和Like模型连接起来,从而允许我们查询Post模型。
让我们继续看代码,首先,我们创建一个Rails应用程序
railsnew post_app
此命令将生成我们需要的基本文件。 现在,我们将生成3个模型,如上图所示。 创建模型的步骤如下所述:
rails g model Postcontent : string image : string like_id: integer comment_id: integer
此命令将使用指定的列为帖子创建一个迁移文件。
rails g modelComment content : string
此命令为具有指定column => content的注释创建迁移文件,rails将为每个模型添加一个默认ID,在这种情况下,rails将生成comment_id
rails g model Likecontent : string
现在,是时候将关联添加到模型中了。
post.rb
class Like & lt ; ApplicationRecord
has_many:comments<br>has_many :likes
end
comment.rb
class Comment & lt ; ApplicationRecord
belongs_to :post
end
like.rb
class Like & lt ; ApplicationRecord
belongs_to :post
end
现在,我们有了所有的模型和多态关联设置。 下一步是使用以下命令迁移我们的迁移文件
rails db :migrate
此命令将在我们的db / schema.rb中创建一个schema.rb文件,在其中我们所有3个表都已设置
现在,我们可以在rails控制台的帮助下测试我们的关联。 类型
rails c
打开rails控制台。 现在我们可以使用以下命令创建帖子
p1 = Post.create(content: 'my first post' , image: 'free.png' )
该命令将在变量p1中创建并保存帖子。 当我们键入p1时,我们应该有该帖子的详细信息
<Postid: 1 , content: 'my first post' , image: 'free.png' >
现在,让我们通过将第一个注释分配给变量来创建注释
c1 = Comment.create(content: 'the post is awesome' )
该命令将引发错误,因为评论与帖子相关联,因此为了解决此问题。 让我们检查下面的命令
c1 = Comment.create(content: 'the post is awesome' , post_id: 1 )
使用post_id作为参数,现在可以成功创建注释。
现在,让我们像注释一样创建1。
l1 =Like . new (content: 'i like the post', post_id: 1)
该命令将在不保存的情况下创建like,因此我们需要使用以下命令将其保存
l1 .save
这就是为什么我喜欢在本文中使用“创建”方法。 现在,我们可以在控制台中处理模型和关联。 有关更多信息和详细说明,请访问Rails文档https://guides.rubyonrails.org/active_record_basics.html
如果您喜欢这篇文章,请与朋友分享。 感谢您的阅读。 我的下一篇文章将涉及Javascript Async和Await。 在此之前,祝您编码愉快
- GitHub: https : //github.com/addod19
- 推特: https : //twitter.com/DanielLarbiAdd1
- 天使名单: https ://angel.co/u/daniel-larbi-addo
- 领英(LinkedIn): https : //www.linkedin.com/in/daniel-larbi-addo/
翻译自: https://hackernoon.com/understanding-rails-polymorphic-active-record-associations-jg703wbi
rails 关联模型