Ruby on rails Rails与模型和迁移的关联

Ruby on rails Rails与模型和迁移的关联,ruby-on-rails,ruby,ruby-on-rails-3,model,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Model,Ruby On Rails 4,无法理解Rails与模型的关联是如何工作的。这里有一个简单的问题: 有两张桌子 产品 id| name | status 1 | Tube | 0 2 | Pillar | 1 3 | Book | 0 4 | Gum | 1 5 | Tumbler | 2 身份 status | name 0 | Unavailable 1 | In stock 2 | Discounted 模型和控制器的名称相同 我不知道如何在每个新产品的状态表

无法理解Rails与模型的关联是如何工作的。这里有一个简单的问题:

有两张桌子

产品

id|   name  | status
1 | Tube    | 0
2 | Pillar  | 1
3 | Book    | 0
4 | Gum     | 1
5 | Tumbler | 2
身份

status | name
0      | Unavailable
1      | In stock
2      | Discounted
模型和控制器的名称相同


我不知道如何在每个新产品的状态表中创建新行。我想在erb中显示状态名称。对于简单的一对多关联,我应该在模型和迁移文件(例如,哪个属于、有一个或有多个…)中写什么?

产品应该
属于:状态
和状态应该
有多个:产品
,并且不需要为产品设置状态。在erb中,您将使用
。要设置这些迁移,
create_table:products do | t | t.string:name;t、 整数:状态_id;结束
创建_表:状态do | t | t.string:name;结束


首先,根据rails惯例,您需要将product.status重命名为product.status\u id

产品所属:状态
状态有很多:产品


Product.find(1).status.name应该是“不可用的”

如果您了解关系数据库的基础知识,那么它几乎是一样的。
当您说,
状态属于:product
并且
产品有许多:状态
时,它本质上意味着状态表有一个外键,您可以使用它来检索给定产品id的所有状态行

要建立此关系,您需要在状态表中创建一个新列
product\u id

rails g migration AddProductIdToStatuses product_id:integer
完成后,在product.rb中添加以下内容:

has_many :statuses
这是您的状态。rb:

belongs_to :product

或者您可以添加一个参考,如本链接中所述: