这是rails 2.0.2的一个bug吗?

悬赏:20 发布时间:2008-07-24 提问人:wootaw (初级程序员)

多对多关系,两个model:
class Group < ActiveRecord::Base
  has_and_belongs_to_many :permissions
end

class Permission < ActiveRecord::Base
  has_and_belongs_to_many :groups
end

进行新增操作,代码如下:
@group = Group.new(:name => params[:group][:name])
(params[:group][:permissions] || []).each do |permission|
  @group.permissions << Permission.find(permission)
end
@group.save

看log,发现生成的sql为:
INSERT INTO `groups` (`name`) VALUES('Supplier')
INSERT INTO groups_permissions (`permission_id`, `group_id`, `id`) VALUES (10, 1, 10)
上一条sql没有id,用数据库自身的自增长,没有问题.但下一条sql确多了id字段,且值始终是permission_id的值,不知道这是否是rails 2.0.2的一个bug,已经困扰我几天了
该问题已经关闭: 0

回答

  permissions = Permission.find(params[:group][:permissions].split(','))
  
  permissions.each do |p|
    p.groups << Group.new(:name => params[:group][:name])
  end



"<<" 会直接Insert 不用再Save

Permission.find(params[:group][:permissions].split(',')) 是一句SQL

Permission.find(id)  否则 N 句
open2ye (中级程序员) 2008-07-25