代码之家  ›  专栏  ›  技术社区  ›  jefflunt

为什么我的新身份证总是“1”

  •  0
  • jefflunt  · 技术社区  · 14 年前

    我在两个对象之间有父子关系。

    Parent :has_many :children
    Child  :belongs_to :parent
    

    在同一个控制器中创建新父对象时,我正在创建子对象。

    @mom = Parent.new
    @child = Child.new
    @mom.children << @child
    

    一切似乎都很顺利,但这位家长还有一个特点-这位家长有一个最喜欢的孩子

    @mom.favorite_child = @child
    

    看起来这应该是可行的,只是假设这是数据库中的第61个子项,所以它的id是61(我知道这正在发生,因为当我检查数据库时,子记录的id是61)。出于某种原因,当我将@child指定给父级的“favorite_child”属性时,“favorite_child”设置为“1”-当我需要将其设置为“61”时。

    线索?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Tim Hoolihan    14 年前

    似乎父母需要

    class Parent
      has_many :children
      has_one :favorite_child, :foreign_key=>'favorite_child_id', :class_name => 'Child'
    

    否则,它不知道这是一个外键关系,而您正试图将一个对象赋给一个整数。