一对一的关系问题 - Rails

时间:2011-08-03 22:41:56

标签: ruby-on-rails-3.1 one-to-one

我与用户和合作伙伴之间存在一对一的关系。在我的用户模型中,我有以下内容:

 has_one :partner, :class_name => "Partner"

如果“relation_status == coupled”,我想创建一个新合作伙伴,然后让用户转到新表单填写他/她的合作伙伴的信息。所以在我的UsersController中,我有

respond_to do |format|
    if @user.save && @user.relation_status != "Coupled"
           format .html { redirect_to @user, notice: "User was successfully created ID   
      was #{@id} "}
           format.json { render json: @user, status: :created, location: @user }

         elsif @user.save && @user.relation_status == "Coupled"
           format .html { redirect_to partner_signup_path, notice: "Time for your patna"     
            }
           format.json { render json: @user, status: :created, location: @user }
    else
           format.html { render action: "new" }
           format.json { render json: @user.errors, status: :unprocessable_entity }
     end
   end
 end

在我的PartnersController中,我有基本的新操作和创建操作,可以成功创建新的合作伙伴。显然,通过执行上面的操作,无法将Partner的ID分配给User的外键 - partner_id。我怎样才能正确地做到这一点?我应该在用户模型中这样做吗?我是一个Rails新手。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

答案是让用户在UsersController中保持会话 - > session [:id] = @ user.id。      然后在PartnersController中,我做了:       @partner = Partner.new(params [:user])       @ partner.save       @user = User.find(session [:id])       @ user.partner = @partner

瞧。