База данных + Rails + вставка данных в 3 таблицы - PullRequest
2 голосов
/ 06 апреля 2011

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

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

Inquiry.create(:question_id=>@question.id.to_i, :respondent_id=>res.id.to_i)
0 голосов
/ 06 апреля 2011

Теперь вопрос не хочет редактироваться: (

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

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

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

Может что-то с моделями?

0 голосов
/ 06 апреля 2011

Этот контроллер у меня есть в моем 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 записи).ОК?Хорошо!Очистить!

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

Я хочу сделать следующее: Когда я добавляю question, он также добавляет информацию (question_id & 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...