在我的Rails应用程序中,如何在模型中添加两​​个对象?

时间:2011-04-05 05:37:27

标签: ruby-on-rails activerecord

这个标题可能听起来不对,但请原谅我,经过十年的Windows开发,我第一次学习Rails。目前,我有一个名为Drill的模型应该包含两个练习。为了根据我目前对Rails的了解做到这一点,我在Drill和Exercise模型之间创建了一个has_many关联......

class Drill < ActiveRecord::Base
  has_many :exercises, :dependent => :destroy
end

但我不想要一个开放式的练习列表,而是我想要对一个练习对象有两个引用,一个叫做left_drill,另一个叫做right_drill。根据文档,我已将代码更改为此...

class Drill < ActiveRecord::Base
  has_one  :right_drill, :class => :exercise
  has_one  :left_drill, :class => :exercise
end

但我不知道这是否正确,我很难测试它,因为我不知道如何分别调整练习模型。截至目前,练习模型保持不变......

class Exercise < ActiveRecord::Base
  belongs_to :drill
end

很难搞清楚如何实现这一目标,并且在我继续阅读文档时,我希望有人可以给我一点方向。

非常感谢你的智慧!

1 个答案:

答案 0 :(得分:3)

你所拥有的是正确的,但通常显式的类名是一个字符串,如下所示:

class Drill < ActiveRecord::Base
  has_one :left_drill, :class => "Exercise"
  has_one :right_drill, :class => "Exercise"
end

您也可以轻松访问这两个钻取对象,其中my_drillDrill的实例:

my_drill.left_drill
my_drill.right_drill

您可能希望考虑重命名left_exerciseright_exercise,以更好地反映它们是Exercise模型的实例,而不是Drill模型。