2014-10-05 3 views
0

У меня есть 3 таблицы: телефонные переговоры, результаты, Questions.I есть 3 модели также: PhoneCall, Result, ВопросRails 4: Как я могу получить запись has_many через отношения?

Схема является телефонные звонки: идентификатор, дата, user_id

Схема вопросов: идентификатор , текст ошибки

Схема результатов: идентификатор, phonecall_id, question_id, результат

Мои Phonecall.rb является:

class Phonecall < ActiveRecord::Base 
    has_many :results 
    has_many :questions, :through => :results 
end 

Мои Result.rb является:

class Result < ActiveRecord::Base 
    has_one :question 
    belongs_to :phonecall 
end 

И мой Question.rb:

class Question < ActiveRecord::Base 
    belongs_to :result 
    has_many :phonecalls, :through => :result 
end 

Так как я могу получить Вопрос свойства в этом цикле:

<% 
@phonecalls.each do |ph| 
    ph.results.each do |r| 

%> 
    <%= ph.id %> 
    <%= r.id %>  
<% 
    end 
end 
%> 

Если бы я попробуйте получить r.question.id - у меня ошибка. Если я попытаюсь сделать какой-то цикл с ph.questions - у меня ошибка.

Как я могу это сделать?

ответ

0

Да, моя проблема была в моих отношениях.

in Result.rb Я сказал, что результат белиз на вопрос, но это неверно. Теперь у меня есть этот relatioships: Result.rb:

class Result < ActiveRecord::Base 
    belongs_to :question 
    belongs_to :phonecall 
end 

Questio.rb

class Question < ActiveRecord::Base 
    has_many :result 
    has_many :phonecalls, :through => :result 
end 

Это работа для меня.

1

has_many :phonecalls, through: :result позволяет сделать:

question.phonecalls, который даст вам обратно массив phonecalls, связанный с одним question экземпляром.

и наоборот, чтобы ответить на Ваш вопрос будет:

@phonecalls.each do |ph| 
    ph.questions.each do |question| 
    puts ph.id 
    puts question.id 
    end 
end 
+0

Это работа для меня, но моя ошибка заключалась в том, что я использовал их каждый? –

+0

'every' в порядке здесь - ваша проблема заключалась в том, что вы вызывали таблицу соединений' results', а не то, что вы действительно хотели «вопросы». рад, что сработал для вас! – Anthony

+0

Я сожалею, но это не сработает. Я забыл сохранить файл. Теперь у меня есть: Mysql :: Ошибка: Неизвестный столбец «questions.result_id» в разделе «on»: SELECT 'questions'. * FROM' questions' INNER JOIN 'results' ON' questions'.'result_id' = 'results'. 'id' WHERE' results'.'phonecall_id' =? –

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