Ruby on rails 为什么我的新身份证总是;1“;

Ruby on rails 为什么我的新身份证总是;1“;,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有两个对象之间的父子关系 Parent :has_many :children Child :belongs_to :parent 在同一控制器中创建新父级时,我正在创建子级 @mom = Parent.new @child = Child.new @mom.children << @child 看起来这应该行得通,但假设这是数据库中的第61个子项,因此它的ID为61(我知道这正在发生,因为当我检查数据库时,子项记录的ID为61)。出于某种原因,当我将@child分配给父对象

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

Parent :has_many :children
Child  :belongs_to :parent
在同一控制器中创建新父级时,我正在创建子级

@mom = Parent.new
@child = Child.new
@mom.children << @child
看起来这应该行得通,但假设这是数据库中的第61个子项,因此它的ID为61(我知道这正在发生,因为当我检查数据库时,子项记录的ID为61)。出于某种原因,当我将@child分配给父对象的“favorite\u child”属性时,“favorite\u child”将被设置为“1”——当我需要将其设置为“61”时


线索?

父母似乎需要

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

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

哦,等等,我的关系是反向的-我有“favorite\u child\u id”字段作为父类的属性-但无论如何,它应该是相反的,因为外键属于带有“bellings_to”声明的类。我在代码中添加了一个外键说明符。我认为您没有将其放在后面。孩子确实会被添加到孩子列表中,但“favorite_Child_id”字段现在留空。我几乎认为在儿童课上我需要“属于:对我有利的家长,:class\u name=>‘家长’。我会继续努力,或者干脆放弃这种想法。必须有一种更干净/更聪明的方法来定义它。如果在子类中有一个名为“is_favored”的布尔属性,而不是试图用关系来定义它,那么当父类在查找他们的最爱时,可以简单地遍历他们所有的孩子,直到他们找到“被宠爱的”孩子——嘿,也许一个父母甚至有不止一个被宠爱的孩子P我想这可能真的管用。
class Parent
  has_many :children
  has_one :favorite_child, :foreign_key=>'favorite_child_id', :class_name => 'Child'