Невозможно сохранить ключ product_id в таблице has_and_belongs_to_many?Ключ автоинкрементный - PullRequest
0 голосов
/ 22 июня 2011

Я запутался с созданием новой ссылки в таблице has_and_belongs_to_many.

Я думаю, что я не использую .build (...), но не могу найти способчтобы исправить это.

Я написал:

@user = User.find(1)
if (params[:product_id])
  @user.products.build(params[:product_id])
end
logger.debug "product id is  #{params[:product_id]}"

respond_to do |format|
  if @user.save
        ...

И сохраненные отношения в моей таблице products_users автоматически увеличиваются ???Пример содержимого моей таблицы: (user_id; product_id) = {(1; 16) (1; 17) (1; 18) ...}

И это создает пустые строки в таблице продуктов сэти новые идентификаторы ...?Это причина сборки?

Но в логгере я увидел правильное значение: params [: product_id] ... так что я забыл?: -s

Модель:

class User < ActiveRecord::Base
  has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
  belongs_to :group
  has_and_belongs_to_many :authors
  has_and_belongs_to_many :users
end

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Вот что у меня сработало

@user = User.find(1)                                                                                                                        
if (params[:product_id])
  @product = Product.find(params[:product_id])
  unless @user.products.include?(@product)
    @user.products << @product                                                                                                      
  end
end
0 голосов
/ 22 июня 2011

Вместо использования

@user.products.build(params[:product_id])

попробуйте

@user.product_ids << params[:product_id]

Я думаю, что это может помочь вам.

...