【发布时间】:2016-03-06 05:12:43
【问题描述】:
我想创建 2 个模型,其中一个属于另一个。我知道创建一个“属于”另一个模型的生成命令,但我不知道如何让另一个模型具有“has_one”。
我可以在生成命令中指定“has_one”吗?还是之后手动添加到模型文件中?
这仍然让我感到困惑,因为“belongs_to”的孩子有外键,而“has_one”的父母没有任何东西。
这不是一对一的关系,所以不需要吗?
【问题讨论】:
标签: ruby-on-rails
我想创建 2 个模型,其中一个属于另一个。我知道创建一个“属于”另一个模型的生成命令,但我不知道如何让另一个模型具有“has_one”。
我可以在生成命令中指定“has_one”吗?还是之后手动添加到模型文件中?
这仍然让我感到困惑,因为“belongs_to”的孩子有外键,而“has_one”的父母没有任何东西。
这不是一对一的关系,所以不需要吗?
【问题讨论】:
标签: ruby-on-rails
让我们用一些具体的术语来举例。我们会说一个用户有一个个人资料。
要生成用户和个人资料,您可以使用:
rails generate model User email:string username:string
rails generate model Profile user:references about_me:text
所以是的,您必须将行 has_one :profile 添加到用户模型中。不,您不必将行 belongs_to :user 添加到配置文件模型中,因为它会为您添加。
至于你的最后一个问题,我不确定你的意思。是的,这是一对一的关系,但你认为哪一部分是不需要的? has_one :profile 行?
如果这是你不理解的部分,那么你就没有完全理解这行给你的东西。它为 User 类添加了有用的方法,其中最重要的可能是 @user.build_profile 和 @user.profile。可能看起来不多,但添加一行代码就很酷了。
【讨论】: