Ruby on rails 缺失';邮政编码';Rails 3.2中的列和用户/帖子/评论之间的关系
我仍然在熟悉Rails,对于我试图利用Rails 3.2解决的一个问题,我有一个问题。以下是我认为问题所在的几个文件的链接: 如果代码真的很糟糕,我很抱歉/添加了一些不需要存在的东西,因为我仍在努力适应一切的工作方式 我想对我网站上的每一篇帖子发表评论——我的逻辑是用户有很多评论,我想这些帖子通过用户有很多评论。我确实添加了这种关系(尽管它似乎没有做任何特别的事情),而且我觉得我的所有表引用都是正确的(尽管我在使用Desive时没有向用户添加任何内容,也不觉得需要添加任何内容,因为帖子本身是一个单独的对象) 现在,我可以显示所有的评论,就像我可以创建和保存它们一样。我还保存了Ruby on rails 缺失';邮政编码';Rails 3.2中的列和用户/帖子/评论之间的关系,ruby-on-rails,model,has-many,belongs-to,relationships,Ruby On Rails,Model,Has Many,Belongs To,Relationships,我仍然在熟悉Rails,对于我试图利用Rails 3.2解决的一个问题,我有一个问题。以下是我认为问题所在的几个文件的链接: 如果代码真的很糟糕,我很抱歉/添加了一些不需要存在的东西,因为我仍在努力适应一切的工作方式 我想对我网站上的每一篇帖子发表评论——我的逻辑是用户有很多评论,我想这些帖子通过用户有很多评论。我确实添加了这种关系(尽管它似乎没有做任何特别的事情),而且我觉得我的所有表引用都是正确的(尽管我在使用Desive时没有向用户添加任何内容,也不觉得需要添加任何内容,因为帖子本身是一
user\u id
变量,这样它就可以理解哪个帐户在发表评论。我真的不确定我应该在哪里/什么时候传递post\u id
,所以这是最大的问题。我在posts\u控制器中尝试过的任何方法(因为理论上我应该能够在加载post页面时编辑该属性),我都会得到一个
undefined method 'post_id'
或
错误,表明它不存在,即使据我所知,我已经定义了它。如前所述,user\u id
可以保存,这一事实让我更加困惑
如果在“显示”视图中创建的注释上显示属性,则会得到以下结果:
{
"id"=>1,
"content"=>"text here",
"posted"=>Sat, 03 Nov 2012 20:36:53 UTC +00:00,
"user_id"=>1,
"created_at"=>Sat, 03 Nov 2012 20:36:53 UTC +00:00,
"updated_at"=>Sat, 03 Nov >2012 20:36:53 UTC +00:00
}
没有post\u id
,尽管我将其添加到迁移表中以供评论。试图将posts控制器中的@post.id
传递给show方法的注释实例,因为它在post下可用,这会导致大量分配错误。在:class
和:foreign\u key
选项上乱搞也没什么效果。根据我所做的研究,其中包括Rails自己的一些文档,我认为我不需要通过关系保存大量的,但我不知道我在哪里遗漏了需要保存的信息
也许这部分是由于我对数据库/模型关系设计缺乏了解,尽管我非常感谢任何帮助。我见过几个类似的问题,但我仍然发现很难将它们的解决方案应用到我自己的特定问题中。根据您的帖子,听起来您可能在创建表后向迁移中添加了post_id。如果这是真的,请理解修改迁移文件是错误的做法。相反,您应该创建一个新的迁移来“修复”数据库的状态
看起来您的帖子和评论的关系设置正确。带有“属于”的模型将具有外键;因此,我希望评论有“post_id”
请查看以下各项是否适用于您:
删除已运行的注释迁移文件中添加的“post_id”
创建新迁移:rails g migration addPostedToComments
在生成的迁移中,在“更改”方法中输入此项:add\u列:comments,:post\u id,:integer
运行迁移:“rake db:migrate”
这将把post_id列添加到您的comments表中
如果您陷入困境,希望完全销毁数据库并从头开始重新创建它(它看起来像一个示例应用程序),(请注意,这将完全删除数据库),您可以运行:rake db:drop db:create db:migrate
批量分配问题可能与rails中的一个新安全选项有关,该选项要求将数据库中可以更新的所有模型属性(列)都列为白名单。有关白名单属性,请参阅attr_可访问文档:
欢迎来到rails!希望这有帮助 根据您的帖子,听起来您可能在创建表后向迁移中添加了post_id。如果这是真的,请理解修改迁移文件是错误的做法。相反,您应该创建一个新的迁移来“修复”数据库的状态
看起来您的帖子和评论的关系设置正确。带有“属于”的模型将具有外键;因此,我希望评论有“post_id”
请查看以下各项是否适用于您:
删除已运行的注释迁移文件中添加的“post_id”
创建新迁移:rails g migration addPostedToComments
在生成的迁移中,在“更改”方法中输入此项:add\u列:comments,:post\u id,:integer
运行迁移:“rake db:migrate”
这将把post_id列添加到您的comments表中
如果您陷入困境,希望完全销毁数据库并从头开始重新创建它(它看起来像一个示例应用程序),(请注意,这将完全删除数据库),您可以运行:rake db:drop db:create db:migrate
批量分配问题可能与rails中的一个新安全选项有关,该选项要求将数据库中可以更新的所有模型属性(列)都列为白名单。有关白名单属性,请参阅attr_可访问文档:
欢迎来到rails!希望这有帮助 我想我有点傻,数据库擦除(考虑到我所处的阶段,这样做很好)修复了post_id出现的问题。我现在的问题是,我不确定在哪里必须将post_id的值设置为当前post的id;只需使用“@comment.post\u id”
{
"id"=>1,
"content"=>"text here",
"posted"=>Sat, 03 Nov 2012 20:36:53 UTC +00:00,
"user_id"=>1,
"created_at"=>Sat, 03 Nov 2012 20:36:53 UTC +00:00,
"updated_at"=>Sat, 03 Nov >2012 20:36:53 UTC +00:00
}