Ruby on rails 关系表中的模型问题

Ruby on rails 关系表中的模型问题,ruby-on-rails,forms,postgresql,relationship,Ruby On Rails,Forms,Postgresql,Relationship,我有两张表:人口统计表和种族统计表。每个人口都需要有一个种族。我在人口统计表中为race_id创建了一个外键。 以下是模型: class Demographic < ActiveRecord::Base has_one :race end class Race < ActiveRecord::Base belongs_to :demographic end class Demographic

我有两张表:人口统计表和种族统计表。每个人口都需要有一个种族。我在人口统计表中为race_id创建了一个外键。 以下是模型:

class Demographic < ActiveRecord::Base
  has_one :race
end

class Race < ActiveRecord::Base
  belongs_to :demographic
end
class Demographic
该视图正确地从races表中提取种族列表。 我想问题出在我的人口统计控制器上。请参阅此错误图像中的代码:

奇怪的是,
@demographic['race\u id']
总是重新运行nil,即使转储有值

rails=v4.0.2
ruby=v2.0.0

psql=v9.1基于您的关系

class Demographic < ActiveRecord::Base
  has_one :race
end

class Race < ActiveRecord::Base
  belongs_to :demographic
end

在这种情况下,在您的人口统计模型中有一个
race\u id
列是正确的。

这是因为,正如您所指出的,
@Demographic['race\u id']
nil
。这将导致以下代码
“人口统计已成功更新”+nil
,如果您尝试使用irb,将以同样的方式失败。它期望一个字符串连接起来,并得到nil。你可以像这样解决这个问题:
'Demographic was successfully updated'+tmp。对于
,这个
“Demographic was successfully updated”{tmp}
或者这个
“Demographic was successfully updated”你能发布一个公共URL来查看图片吗?实际上只有你才能访问那张照片。根据给定的关联,你不应该在你的
人口统计表中有
race\u id
。你应该在你的
race
表中有
graphical\u id
。你只是感到困惑。你必须阅读这些指南,试试这个:是的,这样可以避免抛出异常,但它仍然无法保存价值或包含任何内容。比赛id为空。您是否允许
比赛id
?很明显,它来了。另外,Huy是对的,您应该能够说race,可能,这取决于您的用例……就是这样!非常感谢。我以前在人口统计表中将这个专栏称为“种族”。当我把它作为外键时,它变成了“race_id”,但许可证声明中仍然有“race”。帕万说了同样的话,但这太违反直觉了,我很难接受。我计划有许多不同种族的ppl作为人口统计数据。(即许多亚洲人,许多白种人)。如果我添加一个人口统计_id列,那么该表要么必须复制比赛,要么每个比赛只有一个人口统计。@user1344643如果您粘贴控制器代码,以便我们可以看到您尝试执行的操作,这将很有帮助。我试图理解您的上述评论,但不确定您的解释是基于什么<代码>人口统计信息。@user1344643我想我理解您现在想说的内容。我相信你真正想要的是
人口统计属于种族
,而
种族有很多人口统计
。在这种情况下,您可以保留您的
比赛id
。我会更新我的答案。
class Demographic < ActiveRecord::Base
  belongs_to :race
end

class Race < ActiveRecord::Base
  has_many :demographic
end