Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 继承Ruby控制器_Ruby On Rails_Ruby_Inheritance_Activerecord_Controller - Fatal编程技术网

Ruby on rails 继承Ruby控制器

Ruby on rails 继承Ruby控制器,ruby-on-rails,ruby,inheritance,activerecord,controller,Ruby On Rails,Ruby,Inheritance,Activerecord,Controller,我在一个项目中遇到了一个问题,我有一个称为域的模型和另外两个称为知识和练习的模型。 域保持知识和运动的共同属性和关联,除此之外,知识和运动保持自己的属性和关联。 领域可以是知识,也可以是练习 我将在模型和迁移之间创建以下关系: class Domain < ApplicationRecord has_one :knowledge has_one :exercise end class Knowledge < ApplicationRecord belongs_to :d

我在一个项目中遇到了一个问题,我有一个称为域的模型和另外两个称为知识和练习的模型。 域保持知识和运动的共同属性和关联,除此之外,知识和运动保持自己的属性和关联。 领域可以是知识,也可以是练习

我将在模型和迁移之间创建以下关系:

class Domain < ApplicationRecord
  has_one :knowledge
  has_one :exercise
end

class Knowledge < ApplicationRecord
  belongs_to :domain
end

class Exercise < ApplicationRecord
  belongs_to :domain
end
类域
它现在正在工作,但我不知道这是否是正确的方法,我也不知道创建知识和练习的控制器方法的步骤,因为我之前必须创建一个相应的域

你能告诉我正确的方法吗?或者告诉我我能找到什么


非常感谢你的帮助

域中同时拥有
知识
练习
关系不符合一个域可以是知识或练习的陈述

我建议创建多态关系,以便更好地处理这种情况

class Domain < ApplicationRecord
  belongs_to :implementation, polymorphic: true
end

class Knowledge < ApplicationRecord
  has_one :domain, as: 'implementation'
end

class Exercise < ApplicationRecord
  has_one :domain, as: 'implementation'
end
类域
通过这种方式,
只能有一个实现(要么是
知识
,要么是
练习
),可以更好地满足您的需要。当然,您可以将
实现
重命名为您喜欢的任何名称


希望这能回答你的问题。

你也可以考虑使用STI。