我正在自学 Rails,我很困惑为什么一个协会不能正常工作。我想我错过了一些非常基本的东西,但我无法确切地扼杀什么。
我有两个课程——建筑和设备。构建由 2 件设备组成,分别命名为 position_1 和 position_2。这是我的定义:
class Build < ActiveRecord::Base
has_one :position_1, :class_name => "Equipment"
has_one :position_2, :class_name => "Equipment"
attr_accessor :position_1, :position_2
end
和
class Equipment < ActiveRecord::Base
belongs_to :build, :foreign_key => :position_1
belongs_to :build, :foreign_key => :position_2
end
(暂时忽略这可以由关系表处理以支持任意数量的位置——我基本上是想弄清楚如何让一个类与另一个类有两个 has_one 关系。)
现在,如果我尝试做这样简单的事情......
position_1 = Equipment.find(params[:build][:position_1])
position_2 = Equipment.find(params[:build][:position_2])
@build = Build.new
@build.position_1 = position_1
@build.position_2 = position_2
logger.debug("THE BUILD IS #{@build.inspect}")
我将成功创建一个构建对象,并将设备对象正确分配给 position_1 参数,但构建参数的 position_1 和 position_2 字段留空。
logger.debug("THE EQUIPMENT IS #{@build.position_1}")
> EQUIPMENT IS #<Equipment:0x007fa0581705c0>
logger.debug("THE BUILD IS #{@build.inspect}")
> THE BUILD IS #<Build id: nil, position_1_id: nil, position_2_id: nil, created_at: "2013-05-27 18:00:32", updated_at: "2013-05-27 18:00:32">
我在这里做错了什么?