Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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_Model_Relationship - Fatal编程技术网

Ruby on rails Rails中的自定义关系建模

Ruby on rails Rails中的自定义关系建模,ruby-on-rails,activerecord,model,relationship,Ruby On Rails,Activerecord,Model,Relationship,我想知道建立这种关系的最佳方式是: 我有两个模型:一个答案和一篇文章 答案定义如下: **Answer** - content:text - link:string 我想写一篇文章如下 **Article** - title:string - what:Answer - when:Answer - how:Answer - why:Answer 创建文章模型的最佳方法是什么 我知道一篇文章有很多答案,一个答案属于一篇文章,但我不知道如何实现这种关系,也不知道如何将文章的答案数量

我想知道建立这种关系的最佳方式是:

我有两个模型:一个答案和一篇文章

答案定义如下:

**Answer**
 - content:text
 - link:string
我想写一篇文章如下

**Article**
 - title:string
 - what:Answer
 - when:Answer
 - how:Answer
 - why:Answer
创建文章模型的最佳方法是什么


我知道一篇文章有很多答案,一个答案属于一篇文章,但我不知道如何实现这种关系,也不知道如何将文章的答案数量限制在四个什么、何时如何、为什么

一个选项是创建答案模型:

**Answer**
  - content:text
  - link:string
  - question_type:string
问题类型为“什么”、“何时”、“谁”或“为什么”。和一个文章模型:

**Article**
  - title:string
然后,您可以这样设置您的关系:

答案.rb


好的,我真的很喜欢这种方法。我对这种关系建模有困难,因为我一直在考虑一对一的关系,但我认为一对多是更好的方法。非常感谢。
class Answer < ActiveRecord::Base
  has_one :article
end
class Article < ActiveRecord::Base
  has_many :answers
end
validate :question_type_validator

def question_type_validator
  question_types = answers.all.map(&:question_type)
  question_types.each do |question_type|
    if question_types.count(question_type) > 1
      errors.add(:question_type, "Must only have one of each, what, when, who, why.")
    end
  end
end