典型的なユーザー モデルとプロファイル モデルを使用して、単純な 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