2010-08-19 3 views
0

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

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

Я называю такую ​​информацию, как @example = Procedure.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 сделать | F | в слое зрения, но я получаю:

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

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

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

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

процедуры -> задач много для многих через таблицу join_tasks join.

Когда вы начинаете новый процесс снятия с эксплуатации, вы указываете модель и ОС, модель и ОС определяют, какую процедуру вы следуете, каждая процедура имеет список задач, доступных в таблице соединений. Я хочу создать запись в 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, который затем я могу прокрутить, создав новые строки в соответствующей таблице.

+0

Что вы понимаете, манипулируя данными? Вы хотите иметь HTML-форму, с которой вы можете управлять всем? –

+0

Существует форма для начала процесса снятия с эксплуатации, вы вводите все детали, которые добавляются в таблицу декомпозиции. После этого я хотел бы потянуть decommission_id и все соответствующие task_id и добавить их в таблицу host_tasks. Я хочу добавить их на уровне контроллера автоматически. Когда я говорю, манипулировать данные я имею в виду лишить его таким образом, что @example = [task_id1, task_id2, и т.д.] вместо того @example = «сумасшедший объект рубинового с кучами атрибутов вложенных внутри себя» – Rumpleteaser

+0

я обнаружил, что я может получить доступ к вспомогательным атрибутам, перейдя в @ tasks.task.name и т. д. есть ли лучший способ затем пропустить все это и отправить команду sql для каждого? Есть ли рельефный способ сделать это? – Rumpleteaser

ответ

0

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

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

Смежные вопросы