Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 缺失';邮政编码';Rails 3.2中的列和用户/帖子/评论之间的关系_Ruby On Rails_Model_Has Many_Belongs To_Relationships - Fatal编程技术网

Ruby on rails 缺失';邮政编码';Rails 3.2中的列和用户/帖子/评论之间的关系

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时没有向用户添加任何内容,也不觉得需要添加任何内容,因为帖子本身是一

我仍然在熟悉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
    }