Sql 与控制台而非控制器中的作品有许多直接关联。

Sql 与控制台而非控制器中的作品有许多直接关联。,sql,ruby-on-rails,has-many-through,Sql,Ruby On Rails,Has Many Through,我有一个问题,有很多通过协会。 不知何故,美国团体。创造!:name=>测试组,:school=>学校使用跟踪进行正确插入: 0.1ms开始事务SQL 4.5ms插入组 已创建\u at、findeble、姓名、学校、更新\u at值?, ?, ?, ?, ? [[创建时间:2013年10月1日星期二08:13:36 UTC+00:00], [findeble,false],[name,test group],[school,the school], [更新时间:2013年10月1日星期二08

我有一个问题,有很多通过协会。 不知何故,美国团体。创造!:name=>测试组,:school=>学校使用跟踪进行正确插入:

0.1ms开始事务SQL 4.5ms插入组 已创建\u at、findeble、姓名、学校、更新\u at值?, ?, ?, ?, ? [[创建时间:2013年10月1日星期二08:13:36 UTC+00:00], [findeble,false],[name,test group],[school,the school], [更新时间:2013年10月1日星期二08:13:36 UTC+00:00]]SQL 0.3ms 插入创建的用户组、组id、更新的用户组, 用户id值?[[于2013年10月1日星期二创建] 08:13:36 UTC+00:00],[集团id,7],[更新日期:2013年10月1日,星期二 08:13:36 UTC+00:00],[用户id,1]]0.5ms提交事务 =>

但是当我尝试通过组控制器时

    # GET /groups/new
      # GET /groups/new.json
      def new
        @group = current_user.groups.new

        respond_to do |format|
          format.html # new.html.erb
          format.json { render json: @group }
        end
      end

  def create
    @group = current_user.groups.new(params[:group])

    respond_to do |format|
      if @group.save
        format.html { redirect_to @group, notice: 'Group was successfully created.' }
        format.json { render json: @group, status: :created, location: @group }
      else
        format.html { render action: "new" }
        format.json { render json: @group.errors, status: :unprocessable_entity }
      end
    end
  end
这将创建跟踪:

2013年10月1日10:20:15+0200时,127.0.0.1的职位/组别开始 按组处理控件创建为HTML参数: {utf8=>✓, 真实性令牌=>FRETQOB5MU2GLNIBG644I09XDOHFSEBTGEVEREQMFGPA=, 组=>{name=>测试组2,学校=>另一所学校, findeble=>1},commit=>creategroup}用户加载0.2ms 从users.id=1的用户中选择users.*限制1 0.1ms开始事务SQL 0.8ms插入组 已创建\u at、findeble、姓名、学校、更新\u at值?, ?, ?, ?, ? [[于2013年10月1日星期二08:20:15 UTC+00:00创建], [findeble,true],[name,Test group2],[school,other [更新时间:2013年10月1日星期二08:20:15 UTC+00:00]] 6.1ms提交事务

这只会创建新的组记录,而不会在联接表中创建记录。我不明白是什么造成了这种差异

您需要使用构建方法:


lol007是对的,或者你也可以这样做

新行动

  @group = current_user.groups.build
在创造行动中

  @group = current_user.groups.create(params[:group])

嗯。当我在控制台中执行此操作时,它的行为与我通过组控制器执行此操作时的行为相同。它跳过了连接模型。但是当我使用create时!它在加入的模型中创建一个记录。尝试在控制台中保存该记录,如:g=u.groups.build:name=>testgroup,:school=>theschool,然后是g.save
  @group = current_user.groups.create(params[:group])