Ruby on rails Rails可选注册-保存前更改参数

Ruby on rails Rails可选注册-保存前更改参数,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,我正在开发一个带有可选注册的应用程序。我想让用户,无论有没有帐户,都能够添加链接。如果用户在创建链接时已登录,我如何将用户的会话[user\u id]分配给链接的用户id列 当前代码:user\u id在任何情况下都保持为零 def create @link = Link.new(params[:link]) if @link.save flash[:notice] = "The link was successfully added" redire

我正在开发一个带有可选注册的应用程序。我想让用户,无论有没有帐户,都能够添加链接。如果用户在创建链接时已登录,我如何将用户的
会话[user\u id]
分配给
链接的
用户id

当前代码:
user\u id
在任何情况下都保持为零

  def create
    @link = Link.new(params[:link]) 
    if @link.save
      flash[:notice] = "The link was successfully added"
      redirect_to :action => :hot
    else 
      redirect_to :action => :new
    end
  end 
我在想象这样的事情

  def create
    if session[:user_id]
    #@link equals new link params with user_id = session[:user_id]
    else
    @link = Link.new(params[:link]) 
    end 
    if @link.save
      flash[:notice] = "The link was successfully added"
      redirect_to :action => :hot
    else 
      redirect_to :action => :new
    end
  end 
即使用户未登录,链接也将与params[:link]一起保存

当验证失败时,请小心使用渲染,而不是重定向到(请查看是否需要)

def create
  @link = Link.new params[:link]
  @link.user_id = session[:user_id] if session[:user_id]
  if @link.save
    redirect_to { action: 'hot' }, notice: 'The link was successfully added'
  else
    render :new
  end
end