Rails 4 - 两个模型之间的关联

时间:2016-04-14 00:01:20

标签: ruby-on-rails ruby ruby-on-rails-4

这里是Rails的新手;难以掌握如何建模两种模型之间的关系:

  • 我有一个带有字段的食物模型:id,name,serving_size,calories
  • 我有一个单位模型,其字段为:id,name

单位表只包含“克”,“杯子”,“毫升”

的行

我想将单位表与食物表相关联。目标是如果“serving_size”说100,那么我们就会知道它是盎司,克还是毫升。

我不知道该怎么做

开始:

  • 将一个外来密钥 unit_id 添加到食物(例如通过 add_foreign_key 迁移)

但我不知道从这里出发的正确方法是什么?我可以编写执行原始SQL命令的方法,但必须有一个更简单的方法

我们可以做到这一点,以便我可以做类似的事情:Food.find(名字:'milk').unit.name?

感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:2)

根据您的问题描述,我会采用不同的方式。我将在终端

中运行以下命令
rails g model Unit name:string
rails g model Food name:string service_size:integer calories:integer unit:references 

Rails会神奇地推断其他一切。

这应该创建具有将单位分配给食物所需的关联的迁移和模型。关于这种关联产生的有趣的事情是食物'属于'一个单位和一个单位'has_many'食物。我是这样做的,这样许多食物记录可以共享同一个单位,而不是通过新记录为您创建的每种食物冗余地分配相同的单位。

编辑:如果您想访问与单位相关的所有食物,那么您应该将has_many:食物添加到单位模型中。