記事の一覧からいいねをクリックするとこのようなエラーが出てしまいます。
画像の説明をここに入力

@postには記事のIDが入っていてそれを現在のユーザーのfavoritesにしまうと思うのですが@favoritesというインスタンス変数がいまいちわかりません。このbuildを使うと@favoriteの中に現在のユーザーのお気に入りのポストという感じに作られるイメージなのですが合っているでしょうか?
このコードで動くはずなのですがrailsを始めたばかりなのでイメージが薄くエラーが取れないです。助けて下さいお願いします。

追記:

routes.rb

Rails.application.routes.draw do
  get 'users/index'

  get 'users/show'

  devise_for :users
  resources :users, only: [:index, :show] do
    get :favorites, on: :member
  end
  resources :posts do
    resources :favorites, only: [:create, :destroy]
  end
  root 'posts#index'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

favorite.rb

class Favorite < ApplicationRecord
    class Favorite < ActiveRecord::Base
        belongs_to :user
        belongs_to :post
    end
    #追記2:以下のuserとpostのpresenceをコメントアウトしたらうまく動いたのですが
    #userとpostが空でエラーが出ていたみたいなのですが空でいいのでしょうか?
    validates :user, presence: true
    validates :user_id, uniqueness: { scope: :post_id }
    validates :post, presence: true
end

post.rb

class Post < ApplicationRecord
    belongs_to :user
    mount_uploader :image, ImageUploader
    acts_as_ordered_taggable_on :interests
    has_many :favorites, dependent: :destroy
    def favorited_by? user
        favorites.where(user_id: user.id).exists?
    end
 end

user.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :posts
  has_many :favorites, dependent: :destroy
end

favorites_controller.rb
画像の説明をここに入力

class FavoritesController < ApplicationController
    before_action :authenticate_user!

    def create
        @post = Post.find(params[:post_id])
        #追記1:以下のpost:とpost_id:に変更したら上の画像の別のエラーが出ました。
        @favorite = current_user.favorites.build(post_id: @post)

        if @favorite.save
          redirect_to posts_url, notice: "お気に入りに登録しました"
        else
          redirect_to posts_url, alert: "この投稿はお気に入りに登録できません"
        end
     end

    def destroy
        @favorite = current_user.favorites.find_by!(post_id: params[:post_id])
        @favorite.destroy
        redirect_to posts_url, notice: "お気に入りを解除しました"
    end

end

favoriteテーブル

class CreateFavorites < ActiveRecord::Migration[5.0]
  def change
    create_table :favorites do |t|
      t.integer :user_id
      t.integer :post_id

      t.timestamps
    end
  end
end