设计如何将当前用户关联到post?

如何将我登录的当前用户与我在创建时的post相关联?

我的post模型:

before_create :owner belongs_to :user def owner self.user_id = current_user.id end 

但是因为我不能在模型中使用方法current_user,所以这种方法有效。

这是我的控制器:

 class PostsController  @posts } end end # GET /posts/1 # GET /posts/1.xml def show @post = Post.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @post } end end # GET /posts/new # GET /posts/new.xml def new @post = Post.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @post } end end # GET /posts/1/edit def edit @post = Post.find(params[:id]) end # POST /posts # POST /posts.xml def create @post = Post.new(params[:post]) respond_to do |format| if @post.save format.html { redirect_to(@post, :notice => 'Post was successfully created.') } format.xml { render :xml => @post, :status => :created, :location => @post } else format.html { render :action => "new" } format.xml { render :xml => @post.errors, :status => :unprocessable_entity } end end end # PUT /posts/1 # PUT /posts/1.xml def update @post = Post.find(params[:id]) respond_to do |format| if @post.update_attributes(params[:post]) format.html { redirect_to(@post, :notice => 'Post was successfully updated.') } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @post.errors, :status => :unprocessable_entity } end end end # DELETE /posts/1 # DELETE /posts/1.xml def destroy @post = Post.find(params[:id]) @post.destroy respond_to do |format| format.html { redirect_to(posts_url) } format.xml { head :ok } end end end 

我如何建立关联? 因此,post user_id coloumn被赋予current_user.id

 @post.user = current_user 

在您的创建操作中。

或者,如果您在User模型上有has_many :posts关联,请执行以下操作:

 @post = current_user.posts.new(params[:post]) if @post.save ... 

我建议您通过用户创建post:

 # in create @post = current_user.posts.build(params[:post]) 

这会自动为您填写user_id