1

ユーザーと記事モデルがあります。記事を保存するときは、記事を作成したユーザーも保存する必要があるため、そのユーザーの ID が必要です。では、どのユーザーがそれを作成したかを知る必要がありますか?

私の記事.rb

class Article < ActiveRecord::Base
  belongs_to :user
  attr_accessible :title, :description, :user_id

  validates_length_of :title, :minimum => 5
end

私の article_controller.rb

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

<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 がありますが、使い方がわかりません。

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

手伝ってくれてありがとう!

4

1 に答える 1

4

コントローラーで次のようにする必要があります。

def create
  @article = current_user.articles.build(params[:article])
  ...
end

また

def create
  @article = Article.new(params[:article].merge(:user_id => current_user.id))
  ...
end

しかし、私は最初のものを好むでしょう。

于 2013-05-09T22:25:55.253 に答える