Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 Rails 4在设定种子时出错_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4在设定种子时出错

Ruby on rails Rails 4在设定种子时出错,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个美味比萨脚手架和一个SizePizza脚手架。我需要根据比萨饼的大小来确定一种口味的比萨饼的价格(小比萨饼和大比萨饼的价格不同)。因此,我创建了一个PricePizza模型,它的迁移有:flavor\u pizza\u id、:size\u pizza\u id和:price属性 当我创建/编辑一个FlavorPizza对象时,我想传递一个:price_pizza params,就像这样 FlavorPizza.create({ name: 'Muzzarela', pr

我有一个美味比萨脚手架和一个SizePizza脚手架。我需要根据比萨饼的大小来确定一种口味的比萨饼的价格(小比萨饼和大比萨饼的价格不同)。因此,我创建了一个PricePizza模型,它的迁移有:flavor\u pizza\u id、:size\u pizza\u id和:price属性

当我创建/编辑一个FlavorPizza对象时,我想传递一个:price_pizza params,就像这样

FlavorPizza.create({
    name: 'Muzzarela',
    price_pizzas:[
        {size_pizzas_id: 1, price:'9.99'},
        {size_pizzas_id: 2, price:'12.99}
    ]
})
我试着用过很多次,但我总是出错。未定义的方法
未限定范围

这是我的密码:

价格(百万元):

create_table :price_pizzas do |t|
  t.integer :size_pizzas_id
  t.integer :flavor_pizzas_id

  t.decimal :price, :precision => 5, :scale => 2

  t.timestamps null: false
end
price_pizza.rb

class PricePizza < ActiveRecord::Base
    has_many :flavor_pizzas

    belongs_to :size_pizza
    belongs_to :flavor_pizza
end
class SizePizza < ActiveRecord::Base
    has_many :price_pizzas
end

这可能无法直接回答您的问题,但我通常是这样处理种子的:

size = SizePizza.where(name: 'Small').first_or_create(diameter: '5.5', pieces: 3)
flavor = FlavorPizza.where(name: 'Muzzarela').first_or_create(...)
flavor.price_pizzas.create(price: '9.99') # you could also see if the price exists if desired
这将防止您在种子上复制数据,完成您想要做的事情,并且如果您添加任何独特的约束,将防止将来出现问题

此外,例如,如果您想要创建多个价格,则始终可以通过循环增强:

%w(9.99 12.99 18.99).each { |price| flavor.price_pizzas.create(price: price) }

在seeds.rb中,我将price\u pizzas\u属性更改为price\u pizzas时,我得到了错误:ActiveRecord::AssociationTypeMismatch:PricePizza(#49716420)预期,得到了Hash(#10028260)。我得到了以下错误:NoMethodError:未定义的方法'relation\u delegate\u class',您的price pizza应该属于flavor pizza,或者其他方式。您需要了解如何在迁移中定义模型
size = SizePizza.where(name: 'Small').first_or_create(diameter: '5.5', pieces: 3)
flavor = FlavorPizza.where(name: 'Muzzarela').first_or_create(...)
flavor.price_pizzas.create(price: '9.99') # you could also see if the price exists if desired
%w(9.99 12.99 18.99).each { |price| flavor.price_pizzas.create(price: price) }