База данных Rails вставить данные в 3 таблицы

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть следующий код. Черт, я застрял с этим, я знаю, что это очень просто…

   def create
      @question = Question.create(:text => params[:question][:text], :security_token => "test"))

    if success = @question.save
           respondents = Respondent.find(:all)
           respondents.each do |res|
                Inquiry.create(:question_id=>res.question.id.to_i, :respondent_id=>res.id.to_i)
           end
    end

      render :json => @question.to_ext_json(:success => success)
    end
  

Как вы видите, у меня есть 3 таблицы => вопросы (идентификатор, текст, security_token), респонденты (идентификатор, электронная почта) и таблица отношений под названием запрос (идентификатор, questiond_id, responsent_id). Прежде чем я начну, я сказал, что у меня есть 3 записи в моей таблице электронной почты. Я хочу сделать следующее: когда я добавляю вопрос, он также проверяет, сколько электронных писем у меня есть в моих таблицах (теперь у меня их 3, как я уже сказал), и добавляет информацию в таблицу inqury.
например:
Мне НУЖНО СЛЕДУЮЩЕЕ В МОЕЙ ТАБЛИЦЕ ЗАПРОСОВ (после того, как я добавил вопрос):

 id  | questiond_id | respondent_id
1   |     2                  |   1
2   |     2                  |   2
3   |     2                  |  3
  

Как я могу это сделать? Я использую каждую из них и проверяю, сколько у меня электронных писем, но теперь это не работает, не знаю почему, что я сделал не так в своем коде?

Ответ №1:

Может быть, это?

 Inquiry.create(:question_id=>@question.id.to_i, :respondent_id=>res.id.to_i)
  

Ответ №2:

Этот контроллер у меня есть в моем question_controller. Все в порядке. Добавлен вопрос в таблицу под названием questions .

  def create
      @question = Question.create(:text => params[:question][:text], :security_token => "test"))

      render :json => @question.to_ext_json(:success => @question.save)
    end
  

Далее у меня есть respondents таблица (где у меня ~ 3 записи). Ок? Хорошо! Очистить!

И у меня есть 3-я таблица с именем inquiries . Это таблица отношений с: id, question_id и respondent_id . Ок? ОК. Очистить!

Я хочу сделать следующее: когда я добавляю question , он также добавляет информацию ( question_id amp; respondent_id ) в inquiries таблицу. Итак, если у меня есть 3 записи в моей таблице электронной почты, я должен получить 3 записи в моей таблице запросов, верно? Правильно.

Я добавляю следующий код в question_cotnroller

      def create
          @question = Question.create(:text => params[:question][:text], :security_token => "test"))
if success = @question.save
       respondents = Respondent.find(:all)  #find all my respondent email
       respondents.each do |res|            # each do 
            Inquiry.create(:question_id=>res.question.id.to_i, :respondent_id=>res.id.to_i)        #adding inti inquiries table.. BUT DOESNT:( WHY?
       end
end    
          render :json => @question.to_ext_json(:success => success)
        end
  

ИТАК .. вопрос следующий, есть проблема с этим кодом: ...respondents.each do |res|... , у меня там плохой код.

Ответ №3:

Теперь вопрос, который не нужно редактировать: (

мои модели выглядят:

модель вопроса

 class Question < ActiveRecord::Base
  has_one :answer, :through => :inquiries #, :dependent => :destroy
  belongs_to :inquiry #, :through => :enquiry

  validates_presence_of :text, :message => "ERROR!"
end
  

модель запроса

 class Inquiry < ActiveRecord::Base
  belongs_to :question
  belongs_to :respondent
  has_one    :answer
end
  

отзывчивый

 class Respondent < ActiveRecord::Base
  has_many :inquiries
  has_many :questions, :through => :inquiries
  has_many :answers,   :through => :inquiries
end
  

Может быть, что-то с моделями?