Ruby on rails 4 Rails将DB列中的虚拟属性保存为数组
我认为这是处理这些非模型属性的最佳方式。我有一堆输入,我想在我的数据库中保存为一个数组,但我不知道该怎么做。我知道我必须将参数传递给控制器中的创建操作 _form.html.erbRuby on rails 4 Rails将DB列中的虚拟属性保存为数组,ruby-on-rails-4,Ruby On Rails 4,我认为这是处理这些非模型属性的最佳方式。我有一堆输入,我想在我的数据库中保存为一个数组,但我不知道该怎么做。我知道我必须将参数传递给控制器中的创建操作 _form.html.erb <% @product_sizes_array.each do |ps| %> <%= text_field_tag ps %> <% end %> 所以我不确定你们到底想实现什么,所以我不得不做一些假设。现在,我假设客户下了订单,每个尺寸的文本框就是您想要订购的数量 cla
<% @product_sizes_array.each do |ps| %>
<%= text_field_tag ps %>
<% end %>
所以我不确定你们到底想实现什么,所以我不得不做一些假设。现在,我假设客户下了订单,每个尺寸的文本框就是您想要订购的数量
class Order < ActiveRecord::Base
has_many :items
#id
end
#An ordered item, order specific
class Order::Item < ActiveRecord::Base
belongs_to :item, class_name: '::Item'
#id
#order_id => points to the order this item belongs to
#item_id => points to Item
#size_id => points to an index in the array of sizes
#value => number of items ordered
def size
self.class.int_to_size(self.size_id)
end
def self.int_to_size size_id
::Item::PRODUCT_SIZES[size_id]
end
def self.string_to_size_index name
::Item::PRODUCT_SIZES.index{|s| s == name }
end
end
#Individual item, not size specific
class Item < ActiveRecord::Base
PRODUCT_SIZES = ['S', 'M', 'L', 'XL', '2XL']
#id
#name
#price
end
类顺序指向此项目所属的顺序
#item_id=>指向item
#size_id=>指向大小数组中的索引
#值=>订购的项目数
def大小
self.class.int\u to\u size(self.size\u id)
结束
def self.int_到_size_id
::项目::产品尺寸[尺寸id]
结束
def self.string_to_size_索引名
::项目::产品大小。索引{| s | s==name}
结束
结束
#单个项目,不特定大小
类项
因此,其工作方式是用户提交一个大小数组,该数组对应于他们想要的每个大小的数量。您创建一个订单,然后将当前订单id、所选项目id、相应的大小以及他们需要的数量插入到Order::Item中。请发布您目前拥有的内容。@NickM确定我做了更改。
class Order < ActiveRecord::Base
has_many :items
#id
end
#An ordered item, order specific
class Order::Item < ActiveRecord::Base
belongs_to :item, class_name: '::Item'
#id
#order_id => points to the order this item belongs to
#item_id => points to Item
#size_id => points to an index in the array of sizes
#value => number of items ordered
def size
self.class.int_to_size(self.size_id)
end
def self.int_to_size size_id
::Item::PRODUCT_SIZES[size_id]
end
def self.string_to_size_index name
::Item::PRODUCT_SIZES.index{|s| s == name }
end
end
#Individual item, not size specific
class Item < ActiveRecord::Base
PRODUCT_SIZES = ['S', 'M', 'L', 'XL', '2XL']
#id
#name
#price
end