我正在学习Ruby on Rails,我有点被关联所困。我的项目是创建一个简单的博客,有三个表。用户,帖子和评论。
在我的理解中,在将几个表与外键关联之后,rails会自动找到user_id和post_id。但是每次我试图构建注解时,user_id都是空的。
下面是我的模型:
第一个
下面是我尝试创建评论时的屏幕截图:
正如您所看到的,post_id不是nil,但user_id是nil。
我试着手动输入user_id,它按预期工作。但我找不到如何用自动user_id和post_id创建评论。
我正在学习Ruby on Rails,我有点被关联所困。我的项目是创建一个简单的博客,有三个表。用户,帖子和评论。
在我的理解中,在将几个表与外键关联之后,rails会自动找到user_id和post_id。但是每次我试图构建注解时,user_id都是空的。
下面是我的模型:
第一个
下面是我尝试创建评论时的屏幕截图:
正如您所看到的,post_id不是nil,但user_id是nil。
我试着手动输入user_id,它按预期工作。但我找不到如何用自动user_id和post_id创建评论。
2条答案
按热度按时间oxcyiej71#
在我的理解中,在将几个表与外键关联之后,rails会自动找到user_id和post_id。但是每次我试图构建注解时,user_id都是空的。
这个假设是不正确的。Rails不会自动分配你的关联--它怎么知道你想把评论关联到哪个用户/帖子呢?
通常情况下,构建此路由的方法是使用嵌套路由:
这将创建路径
/posts/:post_id/comments
,这样我们就知道用户想要评论哪个帖子--然后您可以调整表单,使其发布到嵌套的路径:第一次
获取发表评论的用户通常是通过您的身份验证系统从会话中获取的--在本例中,来自Devise的
authenticate_user!
回调将对用户进行身份验证,如果没有用户登录,则重定向到登录。然后,您只需从请求正文(从表单)和会话中的用户分配白名单参数:
这通常是Rails初学者在“Blaugh”教程中最纠结的部分,因为它介绍了一个“嵌入”在另一个资源中的资源及其视图和几个高级概念。如果你还没有读过,我真的会推荐Rails入门指南。
jum4pzuy2#
您可以按如下方式创建备注:
希望这对你有帮助。