Как проверить в модели данные с контроллера
Итак, у меня есть некоторые данные, которые извлекаются из другого приложения rails в контроллере, давайте назовем его ExampleController, и я хочу проверить его на наличие в моей модели, прежде чем позволить мастеру перейти к следующему шагу, и я могу 'не могу понять, как я должен это делать (Я знаю, что получение этих данных непосредственно из контроллера в модель нарушает MVC Я ищу лучший обходной путь для получения моих данных от контроллера) Данные должны поступать из контроллера, так как методы их получения содержатся в ApplicationController, однако я мог бы сделать это в контроллере Awizard, если это проще. (Также я не могу использовать драгоценный камень)
Пожалуйста, предложите какое-то предположение к проблеме, а не объяснение того, почему это неправильный способ делать то, что я уже понимаю, но не могу сделать это по-другому.
Пример контроллера
если это вместо того, чтобы визуализировать данные, то проверьте, нет лив другом месте?
class ExampleController < ApplicationController
def valid_data?
data = #data could be nil or not
if data.blank?
return false
else
return true
end
end
Моя модель - (models / awizard.rb)
Как мне использовать valid_data? метод из примера контроллера? в моей проверке здесь.
class AWizard
include ActiveModel::Validations
include ActiveModel::Conversion
include ActiveModel::Dirty
include ActiveModel::Naming
#This class is used to manage the wizard steps using ActiveModel (not ActiveRecord)
attr_accessor :id
attr_writer :current_step #used to write to current step
define_attribute_methods [:current_step] #used for marking change
validate :first_step_data, :if => lambda { |o| o.current_step == "step1" };
def first_step_data
#What should i put here to check the valid_data? from the examplecontroller
end
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def current_step
@current_step || steps.first
end
def steps
%w[step1 step2 step3] #make list of steps (partials)
end
def next_step
current_step_will_change! #mark changed when moving stepped
self.current_step = steps[steps.index(current_step)+1] unless last_step?
end
def previous_step
current_step_will_change! #mark changed when moving stepped
self.current_step = steps[steps.index(current_step)-1] unless first_step?
end
def first_step?
current_step == steps.first
end
def last_step?
current_step == steps.last
end
def all_valid?
steps.all? do |step|
self.current_step = step
valid?
end
end
def step(val)
current_step_will_change!
self.current_step = steps[val]
end
def persisted?
self.id == 1
end
end
Или мне нужно добавить это к этому представлению?
(/Views/awizard/_step1.html.erb)
<br>
#This is the step I want to validate