Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails将DB列中的虚拟属性保存为数组_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 Rails将DB列中的虚拟属性保存为数组

Ruby 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

我认为这是处理这些非模型属性的最佳方式。我有一堆输入,我想在我的数据库中保存为一个数组,但我不知道该怎么做。我知道我必须将参数传递给控制器中的创建操作

_form.html.erb

<% @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