活动记录中的多态关联

Active Record为您提供了许多工具,可以与数据表建立关联,而无需程序员付出很多努力。 在Active Record的基本形式中,它使您可以使一个表属于另一个表,属于多个表,或者让两个表彼此具有多个表(即通过联接表实现的多对多关系)。 )。 扩展这个想法,可以说我们正在开发一个社交媒体应用程序,我们希望我们的状态和图片都具有一个功能,您可以在其中评论照片和状态。 我们可以说一个用户有很多照片,其中有很多评论。 反过来,每个评论都属于一张照片,而每个照片都属于用户。 然后我们说一个用户有很多状态,然后有很多评论,就像照片一样,属于一个状态。 鉴于照片和状态的注释功能相同,因此映射表的这种方式会重复。 我们的地图如下所示: 在这里,我们有两个不同的注释表,它们的作用完全相同。 有没有一种方法可以使一个评论表知道哪个评论属于状态,哪个评论属于照片? 答案是肯定的,这是通过多态关系实现的。 多态关联只能属于一个多对多关系,例如在我们的示例中,照片/状态可以有很多评论,而评论属于照片/状态。 多态的表将成为注释表,因为它的工作是知道哪些注释用于照片,哪些注释用于状态。 当我们第一次创建注释表时,必须给它一个外键,因为它是“属于”另一个模型的模型。 但是外键是什么?…

Ruby中的自定义Git命令

自动化是一件好事。 “如果您不止一次执行任何操作,就应该编写脚本”。 当然,总是存在一个快速而肮脏的地方,“现在就此刻”。 他们解决了一个特定的问题,使您能够专注于更重要的事情。 但是,如果有任何例行程序开始占用您太多时间,那么可能正是时候使流程自动化。 无论如何,这是一个平衡。 我的团队正在研究CityFALCON项目,这是一家快速发展的金融科技初创企业。 它是由多个Rails应用程序组成的生态系统:主网站和几个服务。 在某个阶段,我们必须创建同一Rails Web应用程序的另一个版本,但控制器,路由和视图的结构略有不同。 当我们确定哪种新的应用程序结构是使这两个版本共存的最佳方式时,我们决定快速又肮脏地将新应用程序从我们的母公司分支。 由于无法控制的原因,我们当时无法将gem的代码合并到应用程序中。 因此,我们进行以下设置:应用程序具有通过Gemfile链接到gem的’master’和’v2’分支的’master’和’v2’分支。 然后问题出来了。 我们必须能够在这些版本之间快速切换。 在确保两个工作副本都是干净的或在开关之前存储任何更改之后,每个这样的开关都需要在相应的目录中执行2个git checkout。 手动执行此操作非常容易,但很快它就变成了每天要执行几次的过程。…