2014-09-22 2 views
1

Я хотел бы знать, что является лучшим способом для создания такого рода отношений:Моделирование пользовательских отношений в Rails

У меня есть две модели: Answer и статьи.

Ответ определяется следующим образом:

**Answer** 
- content:text 
- link:string 

Я хотел бы создать статью следующим образом

**Article** 
- title:string 
- what:Answer 
- when:Answer 
- how:Answer 
- why:Answer 

Что является лучшим способом для создания модели статьи?

Я знаю статью has_many Ответы и ответы belongs_to Статья, но я не знаю, как достичь этих отношений или как ограничить количество ответов статьи до четырех (что, когда, почему).

ответ

0

Одним из вариантов является создание модели ответа:

**Answer** 
    - content:text 
    - link:string 
    - question_type:string 

question_type будет 'что', 'когда', 'кто' или 'почему'. И какая-либо статья модель:

**Article** 
    - title:string 

Вы можете настроить свои отношения как так:

answer.rb

class Answer < ActiveRecord::Base 
    has_one :article 
end 

article.rb

class Article < ActiveRecord::Base 
    has_many :answers 
end 

Наконец, вы можете написать cu stom validator, чтобы гарантировать, что статьи получают только 1x каждого типа вопроса. Валидатор будет выглядеть примерно так:

article.rb

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 
+0

Ok Мне очень нравится этот подход. У меня возникали проблемы с моделированием этих отношений, потому что я все время думал о взаимных отношениях, но я думаю, что один подход ко многим является лучшим подходом. Спасибо! –

Смежные вопросы