首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3:获取当前user_id以保存在不同的模型中

Rails 3:获取当前user_id以保存在不同的模型中
EN

Stack Overflow用户
提问于 2013-05-10 06:10:07
回答 1查看 1.9K关注 0票数 1

我有一个用户和一个文章模型。当我保存一篇文章时,我还需要保存哪个用户创建了这篇文章,因此我需要他的ID。

我的article.rb

代码语言:javascript
复制
class Article < ActiveRecord::Base
  belongs_to :user
  attr_accessible :title, :description, :user_id

  validates_length_of :title, :minimum => 5
end

我的articles_controller.rb

代码语言:javascript
复制
def create
    @article = Article.new(params[:article])

    respond_to do |format|
      if @article.save
        format.html { redirect_to @article, notice: 'Article was successfully created.' }
        format.json { render json: @article, status: :created, location: @article }
      else
        format.html { render action: "new" }
        format.json { render json: @article.errors, status: :unprocessable_entity }
      end
    end
  end

我的文章_form

代码语言:javascript
复制
<div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %><br />
    <%= f.text_area :description %>
  </div>

那么,如何在文章模型中正确设置user_id呢?我想要有会话的那个!我在application_controller中有一个helper_method,但我不确定如何使用它。

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  protect_from_forgery

  helper_method :current_user

  private
  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end
end

感谢您的帮助!

EN

Stack Overflow用户

回答已采纳

发布于 2013-05-10 06:25:55

你应该在你的控制器中做这样的事情:

代码语言:javascript
复制
def create
  @article = current_user.articles.build(params[:article])
  ...
end

代码语言:javascript
复制
def create
  @article = Article.new(params[:article].merge(:user_id => current_user.id))
  ...
end

但我更喜欢第一个。

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16471966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档