我构建了这个应用程序,它运行良好且非常简单:https://github.com/ornerymoose/DeviceCount。它允许您为设备创建新条目,您可以在其中指定设备的计数(即库存量)。
现在即使这样有效,我也被告知需要在每个地点进行一次'基础。即,您创建一个条目,您将有10个文本字段(如果确实有10个设备。此数量永远不会更改,设备也不会更改),对于设备,您将为每个设备文本字段输入该设备的计数。您将选择下拉菜单的位置。创建该条目后,您将拥有:
-1位置
-10列出的设备,都有自己的计数。
我正在努力围绕如何设计这些模型。我应该有Entry
和Device
型号吗?一个单独的Count
模型?
嵌套表格会是最好的方法吗?
赞赏任何和所有输入。
答案 0 :(得分:1)
对于Inventory
加入模型(has_many :through
),您感觉最合适:
#app/models/inventory.rb
class Inventory < ActiveRecord::Base
# id | device_id | location_id | qty | created_at | updated_at
belongs_to :device
belongs_to :location
end
#app/models/device.rb
class Device < ActiveRecord::Base
has_many :inventories
has_many :locations, through: :inventories
accepts_nested_attributes_for :inventories
end
#app/models/location.rb
class Location < ActiveRecord::Base
has_many :inventories
has_many :devices, through: :inventories
end
这将允许您设置&#34;数量&#34;每个位置的device
(必须使用accepts_nested_attributes_for
):
#app/controllers/devices_controller.rb
class DevicesController < ApplicationController
def new
@device = Device.new
@locations = Location.all
end
def create
@device = Device.new device_params
@device.save
end
private
def device_params
params.require(:device).permit(inventories_attributes: [:qty])
end
end
#app/views/devices/new.html.erb
<%= form_for @device do |f| %>
<%= f.text_field :name %>
<%= f.fields_for :inventories, Location.all do |i| %>
<%= i.number_field :qty %>
<% end %>
<%= f.submit %>
<% end %>
这样您就可以创建新的Device
,并通过其qty
提供Inventory
。