цикл через объект данных рельсы от контроллера - PullRequest
0 голосов
/ 19 августа 2010

Я вызвал функцию из класса, чтобы найти все элементы, относящиеся к определенному идентификатору, в отношении многих ко многим HABTM.

Процедуры -> Задачи с таблицей соединений: tasks_tasks

Я вызываю информацию как @example = Процедура. Get_tasks (1,1)

Я бы хотел иметь возможность перебирать возвращаемые данные, чтобы я мог создать экземпляр каждого task_id, относящегося к рассматриваемой процедуре

  def self.get_tasks(model_id, operating_system_id)
    find(:first,  :select => 'tasks.id, procedures.id', :conditions => ["model_id = ? AND operating_system_id = ?", model_id, operating_system_id], :include => [:tasks])
  end

Я попытался отобразить данные, как обычно, и затем использовал .each do | f | в слое вида, но я получаю:

undefined method `each' for #<Procedure:0x2b879be1db30>

Оригинальный вопрос:

Я создаю приложение rails для отслеживания процессов, которые мы выполняем. Когда создается новый экземпляр процесса, я хочу автоматически создавать строки для всех задач, которые нужно будет выполнить. таблицы:

  • decommissions
  • модель
  • operating_systems
  • процедуры
  • задачи
  • procedures_tasks
  • host_tasks

процедуры -> задач много ко многим через таблицу присоединения процедур_tasks.

когда вы запускаете новый процесс вывода из эксплуатации, вы указываете модель и операционную систему, модель и операционная система указывают, какую процедуру вы выполняете, каждая процедура имеет список задач, доступных в таблице соединений. Я хочу создать запись в host_tasks для каждой задачи, относящейся к процедуре, относящейся к создаваемому списанию.

Я занимался этим несколько дней, есть предложения?

class Procedure < ActiveRecord::Base
  has_and_belongs_to_many :tasks
 #has_many :tasks, :through => :procedures_tasks
# has_many :procedures_tasks
  belongs_to :model
  belongs_to :operating_system
  validates_presence_of :name
  validates_presence_of :operating_system_id
  validates_presence_of :model_id

  def self.get_tasks(model_id, operating_system_id)
    find(:first,  :select => 'tasks.id, procedures.id', :conditions => ["model_id = ? AND operating_system_id = ?", model_id, operating_system_id], :include => [:tasks])
  end

end

метод get_tasks будет извлекать задачи, связанные с процедурой, но я не знаю, как управлять данными, извлеченными из базы данных в рельсах, я не смог получить доступ к атрибутам возвращаемого объекта через контроллер потому что они еще не были обработаны?

в идеале я хотел бы иметь возможность форматировать эти данные так, чтобы у меня был только массив идентификаторов task_id, которые я затем мог бы перебирать, создавая новые строки в соответствующей таблице.

1 Ответ

0 голосов
/ 23 августа 2010

Это не было циклично, потому что я использовал опцию: first при поиске данных.Я изменил это на: все, что позволило мне .each делать | f |и т. д.

Не лучший вариант, но в любом случае будет только один вариант, поэтому он не вызовет проблем.

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