【发布时间】:2012-11-04 00:19:21
【问题描述】:
我仍在熟悉 Rails,并且对我尝试使用 Rails 3.2 解决的问题有疑问。这是我认为我的问题所在的几个文件的链接:
https://gist.github.com/0fe5cf9093b21f4f632f
如果代码真的很糟糕/添加了一些不需要存在的东西,我深表歉意,因为我仍在努力适应一切的工作方式。
我希望在我的网站上发布的每个帖子都有 cmets - 我的逻辑是用户有很多 cmets,我想这些帖子通过用户有很多 cmets。我确实添加了这种关系(尽管它似乎没有做任何特别的事情),而且我觉得我所有的表引用都是正确的(尽管我没有向用户添加任何东西,因为我正在使用设计和感觉我不需要添加任何东西,因为帖子本身就是一个单独的对象)。
到目前为止,我可以展示所有的 cmets,因为我可以创建和保存它们。我至少还保存了user_id 变量,因此它可以了解哪个帐户正在发表评论。我不确定我应该在哪里/何时传递post_id,所以这是最大的问题。我在posts_controller 中尝试过的任何方式(因为理论上我应该能够在加载帖子页面时编辑该属性),我得到一个
undefined method 'post_id'
或
no post_id column
错误,表示它不存在,尽管据我了解,我已经定义了它。如前所述,user_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_id,虽然我确实将它添加到cmets 的迁移表中。试图在 post 控制器中传递 @post.id (到 show 方法的评论实例,因为它可以在帖子下方使用)会导致质量分配错误。摆弄:class 和:foreign_key 选项也没有多大作用。根据我所做的研究,其中包括 Rails 自己的一些文档,我认为我不需要 has_many 通过关系,但我不知道我在哪里错过了保存信息所需的内容相应地。
也许这部分是由于我对数据库/模型关系设计缺乏了解,尽管感谢任何帮助。我见过几个类似的问题,但我仍然发现很难将他们的解决方案应用到我自己的特定问题的上下文中。
【问题讨论】:
标签: ruby-on-rails model has-many belongs-to relationships