我正在使用典型的用户模型和配置文件模型构建一个简单的 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