Activerecord 传递给.build()的属性不会显示在查询中

Activerecord 传递给.build()的属性不会显示在查询中,activerecord,ruby-on-rails-3,Activerecord,Ruby On Rails 3,希望你们都能享受你们的假期 我在尝试将行插入到非常简单的数据库表时遇到了一个非常有趣的问题。 基本思想很简单。用户在multiselect中选择一个/多个用户,这些用户应添加到组中 这段代码将在user\u group\u relationships表中插入一行,但用户id始终为 @group = Group.find(params[:group_id]) params[:newMember][:users].each do |uid| # For debugging

希望你们都能享受你们的假期

我在尝试将行插入到非常简单的数据库表时遇到了一个非常有趣的问题。
基本思想很简单。用户在multiselect中选择一个/多个用户,这些用户应添加到组中

这段代码将在user\u group\u relationships表中插入一行,但用户id始终为

   @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
用户id总是以null形式插入,即使它明显存在。您可以看到本例中的uid是5,因此它应该可以工作

Uid:5

SQL(0.3ms)插入到 “用户\组\关系” (“创建于”,“组id”, “更新的位置”、“用户id”)值 ('2010-12-27 14:03:24.331303', 2, '2010-12-27 14:03:24.33303',空)


你知道这失败的原因吗?

看起来
用户id
用户组关系
模型中是不可访问的


您可能还想检查它是否相关。

我认为@zabba的答案可能是您需要寻找的答案,但我建议您在这里提供一些额外的建议

您的“组”和“用户”模型似乎通过“用户组”模型相互连接。你会有关系的

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
类组:用户\u组\u关系
结束
类UserGroupRelationship
在控制器中

# 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) }
#查找组
@group=group.find(参数[:group\u id])
#对于每个用户id,找到该用户并添加用户\组\关系

参数[:newMember][:users]。每个{| u |@group.users正是我想要的!谢谢!我想这只是学习一种新语言/框架的痛苦,你并不真正了解所有可用的工具。很好的解决方案!我仍然使用了Zabba的答案,因为在这种情况下,它似乎是更有效的方法。你的建议在一个小时内就派上了用场不过是另一个控制器。:D