Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 电子商务平台中的项目定制_Ruby On Rails_Ruby_Activerecord_E Commerce - Fatal编程技术网

Ruby on rails 电子商务平台中的项目定制

Ruby on rails 电子商务平台中的项目定制,ruby-on-rails,ruby,activerecord,e-commerce,Ruby On Rails,Ruby,Activerecord,E Commerce,我正在Rails中为餐馆构建一个简单的电子商务平台,以方便在线订购。我想做的是让一家餐厅独立定制其项目。例如,所述餐厅可能想要将大小添加到一个项目,对不同的大小收取额外费用,或将风味添加到另一个项目,或任何任意属性;此外,不同的项目不一定具有相同的属性。所以基本上,我想让餐馆在创建项目时添加自定义字段 实现这一目标的最佳方法是什么 谢谢。试着看看,比如使用Postgres 9.2+作为数据库后端,您可以轻松实现您的目标 启用(这也可以通过SQL完成) 然后你就可以创建记录了,比如 i1 = It

我正在Rails中为餐馆构建一个简单的电子商务平台,以方便在线订购。我想做的是让一家
餐厅
独立定制其
项目
。例如,所述餐厅可能想要将
大小
添加到一个
项目
,对不同的大小收取额外费用,或将
风味
添加到另一个
项目
,或任何任意属性;此外,不同的项目不一定具有相同的属性。所以基本上,我想让餐馆在创建项目时添加自定义字段

实现这一目标的最佳方法是什么


谢谢。

试着看看,比如使用Postgres 9.2+作为数据库后端,您可以轻松实现您的目标

启用(这也可以通过SQL完成)

然后你就可以创建记录了,比如

i1 = Item.new
i1.name = 'foo'
i1.type = 'salad'
i1.extras = { size: 'big', vegan: 'yes' }
i1.save

i2 = Item.new
i2.name = 'bar'
i2.type = 'snack'
i2.extras = { flavor: 'mexicana', kosher: 'yes' }
i2.save
质疑

# Items having flavor
Item.where("extras ? :key", key: "flavor") 

# Items classified as kosher
Item.where("extras @> hstore(:key, :value)",
  key: "kosher", value: "yes"
)
顺便说一句,postgres还有json和jsonb列类型,用于在数据库中存储文档。它们也可能有用-

i1 = Item.new
i1.name = 'foo'
i1.type = 'salad'
i1.extras = { size: 'big', vegan: 'yes' }
i1.save

i2 = Item.new
i2.name = 'bar'
i2.type = 'snack'
i2.extras = { flavor: 'mexicana', kosher: 'yes' }
i2.save
# Items having flavor
Item.where("extras ? :key", key: "flavor") 

# Items classified as kosher
Item.where("extras @> hstore(:key, :value)",
  key: "kosher", value: "yes"
)