将现有对象添加到另一个对象(Ruby on Rails)

问题描述:

我有一个Item模型和一个Cycle模型。项目模型属于循环,循环有许多项目。项目模型具有条形码值和cycle_id值。将现有对象添加到另一个对象(Ruby on Rails)

我想有一个显示循环模板,其中有10个空白字段用于输入条形码值。假设数据库中已经存在100个项目(带有条形码值但没有cycle_id)。当条形码值输入到字段中时,应用程序应提取每个输入的条形码值,并使用当前选定的循环的cycle_id更新相关项目。

这可能是一个太宽泛的问题,但我一直在圈子里转了几个小时,我甚至不知道从哪里开始。任何帮助是极大的赞赏。谢谢!

在你的新周期/编辑表单,我会在表单中的某处添加十个空输入框。没有标记的最大的例子,但这样的事情:

<% 10.times do %> 
    <input name="barcodes[]" /> 
<% end %> 

然后在您的周期控制器,我会找到循环,然后补充说,他们输入的所有条形码。如果不存在,我假设你不会创建新的条形码。 (这是Rails 3语法)

def update 
    @cycle = Cycle.find(params[:id]) 

    barcodes = Item.where(:barcode => params[:barcodes]) 
    @cycle.barcodes = barcodes 

    @cycle.save 
end 

假设你想用条形码ID为1,2,3,4到id为1周期项目添加你既可以做

cycle = Cycle.find(1) 
[1, 2, 3, 4].each do |barcode| 
    item = Items.where(:barcode => barcode) 
    cycle.items << item 
end 
cycle.save 

或做

cycle = Cycle.find(1) 
[1, 2, 3, 4].each do |barcode| 
    item = Items.where(:barcode => barcode) 
    item.cycle = cycle 
    item.save 
end 
+0

感谢您的帮助! – aguynamedloren 2011-01-12 04:15:17