это мой первый вопрос на SO :)
Я совершенно новый для RoR, и я пытаюсь понять PINGOWebApp, который вы можете найти здесь https://github.com/PingoUPB/PINGOWebApp. Они задали свою «вопросную» модель (app/models/question.rb) в разных типах вопросов в app/services/(например, number_question.rb, text_question.rb), все наследуемые от приложения/services/generic_question.rb:RoR: NameError: Uninitialized постоянной (служба)
class GenericQuestion < Delegator
def initialize(question)
super
@question = question
end
def __getobj__ # required
@question
end
def __setobj__(obj)
@question = obj # change delegation object
end
def to_model
@question.to_model
end
def has_settings?
false
end
def add_setting(key, value)
@question.settings ||= {}
@question.settings[key.to_s] = value.to_s
end
def self.model_name
Question.model_name
end
def self.reflect_on_association arg
Question.reflect_on_association arg
end
alias_method :question, :__getobj__ # reader for survey
end
вот мои первые вопросы:
1) Поскольку нет никакого генератора обслуживания, они должны быть созданы все рубин-файлы в приложение/сервис/вручную, не так ли? Или что еще есть?
2) Я раздвоенный проект и добавил еще одну услуги вручную, называемый dragdrop_question.rb, и интегрировать его в question_controller.rb:
class QuestionsController < ApplicationController
...
def new
@question_single = SingleChoiceQuestion.new.tap { |q| q.question_options.build }
@question_multi = MultipleChoiceQuestion.new.tap { |q| q.question_options.build }
@question_text = TextQuestion.new
@question_number = NumberQuestion.new #refactor this maybe?
@question_dragdrop = DragDropQuestion.new.tap { |q| q.answer_pairs.build }
end
...
end
Я также адаптировал вид и проверил его на месте. Я получил NameError at/questions/new uninitialized constant QuestionsController :: DragDropQuestion.
Если добавить
require_dependency "app/services/dragdrop_question.rb"
к question_controller.rb ушла ошибка, но они еще не сделали это что-нибудь подобное. Итак, как они представляют услуги для контроллеров?
Благодарим за любую помощь заранее, особенно за учебники или ссылки на книги, которые объясняют схему контроллера-модели-представления-службы.
Это решило мою проблему - я понял, что определяю несколько классов в одном файле. Перемещение дополнительных классов в их собственные файлы решило это. – taylorthurlow