2016-04-18 3 views
0

У меня есть две модели, как:UnknownAttributeError для вложенной формы

Заказчик:

has_many :products, :dependent => :destroy 
accepts_nested_attributes_for :products, reject_if: proc { |attributes| attributes['product_id'].blank? } 

продукта:

belongs_to :customer 

продукты контроллер:

def product_params 
    params.require(:product).permit(:name, :first_build) 
end 

клиентов контроллер:

def customer_params 
     params.require(:customer).permit(:first_build, :name, :product_id, 
            products_attributes: [:first_build, :customer_id]) 
    end 

Так в контроллере клиентов я делаю это

@customer.products.build(:first_build => true) 

, но я получаю эту ошибку

unknown attribute 'first_build' for Prodcut 

, но когда я делаю это @customer.products.build(:name => "test product name")

она прекрасно работает без каких-либо ошибок , Здесь стоит отметить, что first_build не является столбцом в таблице продуктов.

+0

Я предполагаю, что вы намеревались напечатать 'Product' not' Prodcut' ... но если 'first_build' не является атрибутом (а не столбцом), почему вы его передаете? – SteveTurczyn

+0

Да, это продукт. Я просто хочу знать, можно ли передавать атрибуты, отсутствующие в таблице. –

+0

О, да, вы можете. Я отправлю ответ. – SteveTurczyn

ответ

1

Если вы хотите передать атрибуты, отсутствующие в таблице, вы можете создать «временный» атрибут, который не будет храниться в таблице, но будет доступен, пока объект находится в памяти.

class Product < ActiveRecord::Base 

    attr_accessor :first_build 
    ... 

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