循环来自控制器的rails数据对象

时间:2010-08-19 01:08:34

标签: sql mysql ruby-on-rails loops

我已经从类中调用了一个函数来查找与多对多HABTM关系中的特定ID相关的所有项目。

程序 - >具有连接表的任务: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 do | f |在视图层,但我得到:

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

原始问题:

我正在创建一个rails应用程序来跟踪我们执行的进程。创建进程的新实例时,我想为所有需要执行的任务自动创建行。 表:

  • decommissions
  • 模型
  • operating_systems
  • 程序
  • 任务
  • procedures_tasks
  • host_tasks

程序 - &gt;通过procedures_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方法将检索与该过程相关的任务,但我不知道如何操纵从rails中的数据库中提取的数据,我无法通过控制器访问返回对象的属性因为它们尚未渲染?

理想情况下,我希望能够格式化这些数据,以便我只有一个task_id数组,然后我可以循环在相应的表中创建新行。

1 个答案:

答案 0 :(得分:0)

它没有循环,因为我在查找数据时使用的是:first选项。我把它改成了:所有允许我的东西。每个人都做| f |等

不是最好的选择,但总会有一个选项,所以它不会引起问题。