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