Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在我的Rails应用程序中,如何向模型添加两个对象?_Ruby On Rails_Activerecord - Fatal编程技术网

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

Ruby on rails 在我的Rails应用程序中,如何向模型添加两个对象?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,这个标题听起来可能不太对劲,但请原谅,我在windows开发十年后第一次学习Rails。目前,我有一个名为Drill的模型,它应该包含两个练习。基于我目前对Rails的了解,为了实现这一点,我在训练和练习模型之间建立了许多关联 class Drill < ActiveRecord::Base has_many :exercises, :dependent => :destroy end class-Drill:破坏 结束 但我不想要一个开放式的练习列表,相反,我希望有两个对单

这个标题听起来可能不太对劲,但请原谅,我在windows开发十年后第一次学习Rails。目前,我有一个名为Drill的模型,它应该包含两个练习。基于我目前对Rails的了解,为了实现这一点,我在训练和练习模型之间建立了许多关联

class Drill < ActiveRecord::Base
  has_many :exercises, :dependent => :destroy
end
class-Drill:破坏
结束
但我不想要一个开放式的练习列表,相反,我希望有两个对单个练习对象的引用,一个称为left_drill,另一个称为right_drill。根据文档,我将代码更改为

class Drill < ActiveRecord::Base
  has_one  :right_drill, :class => :exercise
  has_one  :left_drill, :class => :exercise
end
class-Drill:练习
有一个:左钻,:class=>:练习
结束
但我不知道这是否正确,我很难测试它,因为我不知道如何分别调整运动模型。到目前为止,演习模式保持不变

class Exercise < ActiveRecord::Base
  belongs_to :drill
end
课堂练习
在我继续阅读文档的同时,我很难想出如何实现这一点,我希望有人能给我一些指导


非常感谢你的智慧

您所拥有的是正确的,尽管通常显式类名是以字符串形式给出的,如下所示:

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

您可能希望考虑重命名它们“代码>左Type练习和 RealItActudio<代码>,以更好地反映它们是<代码>练习< /C>模式,而不是<代码>演练< /C> >模型。

my_drill.left_drill
my_drill.right_drill