2015-08-06 4 views
1

У меня есть лебедь FlavorPizza и эстакада размераPizza. Мне нужно установить цену аромата пиццы на основе его размера (цена маленькой пиццы отличается от большой). Итак, я создал модель PricePizza, у которой есть: flavor_pizza_id,: size_pizza_id и: атрибуты цены.Rails 4 ошибка при посеве has_many

Я хотел бы, когда я создавать/редактировать объект FlavorPizza, чтобы пропускать: price_pizza Params, так же, как тот

FlavorPizza.create({ 
    name: 'Muzzarela', 
    price_pizzas:[ 
     {size_pizzas_id: 1, price:'9.99'}, 
     {size_pizzas_id: 2, price:'12.99} 
    ] 
}) 

Я попытался с помощью имеет много до конца, но я продолжаю получать ошибки. не определен метод unscoped

Вот мой код:

price_pizza миграция:

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 

flavor_pizza.rb

class FlavorPizza < ActiveRecord::Base 
    has_many :price_pizzas 

    accepts_nested_attributes_for :price_pizzas 
end 

size_pizza.rb

class SizePizza < ActiveRecord::Base 
    has_many :price_pizzas 
end 

seeds.rb

SizePizza.create([{name: 'Small', diameter: '5.5', pieces: 3}]) 
FlavorPizza.create([{name: 'Muzzarela', description: 'test description', price_pizzas_attributes: [{size_pizzas_id: 1, price: '9.99'}]}]) 
#PricePizza.create(size_pizzas_id: 1, flavor_pizzas_id: 1, price: '10') 
+0

когда в seeds.rb, я изменить price_pizzas_attributes к price_pizzas, я получаю ошибку: ActiveRecord :: AssociationTypeMismatch: PricePizza (# 49716420) ожидается, получил Hash (# 10028260) – Aleksandrus

ответ

1

Это не может прямо ответить на ваш вопрос, но это, как правило, как я приближаюсь семена:

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) } 
+0

я получил эту ошибку: NoMethodError: неопределенный метод 'relation_delegate_class' для # Aleksandrus

+1

Ваша цена пицца должна принадлежать аромат пиццы , или, возможно, другим способом. Вам нужно будет увидеть, как вы определили модели в миграциях –

Смежные вопросы