Database + Rails +将数据插入3个表

时间:2011-04-06 07:05:49

标签: 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个表=>问题(id,text,security_token),受访者(id,电子邮件)和称为查询的关系表(id,questiond_id,respondent_id)。在我开始之前,我告诉我在我的电子邮件表中有3条记录。我想做以下事情:当我添加问题时,它还会查看我的表格中有多少封电子邮件(现在我已经按照我说的那样),并在inqury表中添加信息。 例如: 我需要在我的询问表中(在我添加问题之后):

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

我怎么做?我使用每一个,并检查我有多少电子邮件,但现在它不起作用,不知道为什么,我在我的代码中做错了什么?

3 个答案:

答案 0 :(得分:2)

也许这个?

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

答案 1 :(得分:0)

这个控制器我在我的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_idrespondent_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|...,我的代码不好。

答案 2 :(得分:0)

现在问题不想被编辑:(

我的模特看起来:

问题模型

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

也许是模特的东西?