0

典型的なユーザー モデルとプロファイル モデルを使用して、単純な Web アプリを構築しています。ユーザー モデル has_one プロファイル & プロファイル モデル belongs_to ユーザー。私は基本的に Michael Hartl のチュートリアルに従っているので、すべてうまくいっています (ただし、彼はマイクロポストに has_many を使用しています)。

これが取引です。ユーザーを作成してから、プロファイルを作成します。両方のレコードが存在することを知っています。b/c sqlite3 db ブラウザでそれらの存在を確認します。ただし、-> localhost/3000/profiles/1 にアクセスしてショー ビューをレンダリングしようとするとすぐに、以下に示すエラーが表示されます。しかし、さらに奇妙なのは、データベースを確認すると、プロファイル レコードがなくなっていることです。助けてください!

注:依存破棄と関係があると感じています (b/c を削除すると、この問題が解消されます) が、その理由はわかりません。さらに、とにかく依存破壊したいと思います。対応するユーザーがいない場合、プロファイル レコードが不要になることはありませんよね?

ルート

resources :users
resources :profiles

モデル

class User < ActiveRecord::Base
has_one :profile, dependent: :destroy

class Profile < ActiveRecord::Base
belongs_to :user

プロフィールコントローラー

def new
  @profile = current_user.build_profile
end

def create
  @profile = current_user.build_profile(params[:profile])
  if @profile.save
    flash[:success] = "Profile created!"
    redirect_to root_path
  else
    render 'new'
  end
end

def show 
  @profile = Profile.find(params[:id])
end

ビュー/プロファイル/show.html.erb

<p>Display Name: <%= @profile.display_name %></p>

これは、アクセスしようとしたときに表示されるエラー メッセージです -> localhost/3000/profiles/1

ActiveRecord::RecordNotFound in ProfilesController#show

Couldn't find Profile without an ID
4

0 に答える 0