Атрибуты, переданные в .build (), не отображаются в запросе - PullRequest
0 голосов
/ 27 декабря 2010

Надеюсь, что вы все наслаждаетесь своими выходными.

Я столкнулся с довольно забавной проблемой при попытке вставить строки в действительно очень простую таблицу базы данных.
Основная идея довольно проста.Пользователь выбирает одного / нескольких пользователей в множественном выборе, которые должны быть добавлены в группу.

Этот фрагмент кода вставит строку в таблицу user_group_relationships, но идентификатор пользователя всегда

   @group = Group.find(params[:group_id])

   params[:newMember][:users].each do |uid|
      # For debugging purposes.
      puts 'Uid:'+uid

      @rel = @group.user_group_relationships.build( :user_id => uid.to_i )          
      @rel.save 

    end

Идентификатор пользователя всегда вставляется как ноль, даже если он явно там.Вы можете видеть, что uid в этом примере 5, поэтому он должен работать.

Uid: 5
...
SQL (0.3ms) INSERT INTO "user_group_relationships" ("made_at"," group_id "," updated_at "," user_id ") ЗНАЧЕНИЯ ('2010-12-27 14: 03: 24.331303', 2, '2010-12-27 14: 03: 24.331303', NULL)

Есть идеи, почему это не удается?

Ответы [ 2 ]

1 голос
/ 27 декабря 2010

Я думаю, что ответ @ zabba, вероятно, тот, который вам нужно искать, но я бы предложил несколько дополнительных вещей здесь.

Ваши модели "Группа" и "Пользователь" связаны друг с другом черезМодель "UserGroup" кажется.У вас будут отношения

class Group < ActiveRecord::Base
  has_many :user_group_relationships
  has_many :users, :through => :user_group_relationships
end

class UserGroupRelationship < ActiveRecord::Base
  belongs_to :group
  belongs_to :user
end

В вашем контроллере

# Find the group
@group = Group.find(params[:group_id])

# For each user id, find the user and add the user_group_relationship
params[:newMember][:users].each{|u| @group.users << User.find(u) }

Чтение Rails Документация по ассоциациям и методам, сгенерированным для вас автоматически при определении ассоциацийЧаще всего работать с ассоциациями проще, чем вы думаете!Я постоянно открываю новые API в Rails!:) Удачи!

1 голос
/ 27 декабря 2010

Похоже, user_id не attr_accessible в модели UserGroupRelationship.

Возможно, вы также захотите проверить это , это может быть уместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...