#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
Может быть, что-то с моделями?