希望你们都享受你的冬日。
在尝试将行插入到一个非常简单的数据库表时,我遇到了一个非常有趣的问题 基本想法很简单。用户在多选中选择一个/多个用户,这些用户应该被添加到组中。
这段代码会在user_group_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,所以它应该可以工作。
发表于:5
...
SQL(0.3ms)INSERT INTO “user_group_relationships” (“created_at”,“group_id”, “updated_at”,“user_id”)VALUES ('2010-12-27 14:03:24.331303',2, '2010-12-27 14:03:24.331303',NULL)
为什么会失败的任何想法?
答案 0 :(得分:1)
user_id
模型中的attr_accessible
似乎不是UserGroupRelationship
。
您可能还想查看this它可能是相关的。
答案 1 :(得分:1)
我认为@ 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文档以及定义关联时自动生成的方法。通常,与协会合作比您想象的更容易!我经常在Rails中发现新的API!祝你好运!