0

我正在使用典型的用户模型和配置文件模型构建一个简单的 Web 应用程序。用户模型 has_one profile & profile model belongs_to user。一切都很顺利,因为我基本上遵循 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

ProfilesController

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