Rails: 在创建模型时出现未知属性

8
我有一个错误信息 - “未知属性:news_id”,但我不知道问题出在哪里。我有一个新闻控制器,我想为每个新闻创建评论。希望有人能帮助我。提前感谢。
schema.rb
create_table "comments", :primary_key => "ID", :force => true do |t| 
  t.integer "Author_ID" 
  t.integer "News_ID", :null => false 
  t.string "Content", :limit => 500, :null => false 
  t.datetime "Date", :null => false 
end

评论模型:

belongs_to :news

新闻模型:
has_many :comments

这可能是Rails的复数问题。Comment模型有一个名为new_id的字段吗? - Zabba
我的评论表包含这些列 - ID,新闻ID,内容。 - user1107922
3个回答

8
这是因为您的Comment模型中没有添加:news_id。编写迁移以将news_id添加到Comment中,您的问题将得到解决。

在评论模型中添加attr_accessible:news_id,但仍然无法工作。 - user1107922
这也是我的主要猜测,但我们不能确定,因为您没有展示您的 schema.rb 文件。 - Atastor
创建表格 "comments",:primary_key => "ID",:force => true do |t| t.integer "Author_ID" t.integer "News_ID", :null => false t.string "Content", :limit => 500, :null => false t.datetime "Date", :null => false end - user1107922
2
它应该是 t.integer :news_id,而不是 t.integer News_ID。 - maximus ツ

1
你可以在 create 动作的开头使用 puts params 来打印出参数,以检查实际发送的属性。
或者你可以查看评论创建动作的路由,以获取参数。

当我在create操作中使用puts参数进行打印时,我看不到哈希值,而是出现错误消息。也许我做错了什么? - user1107922
在执行第一行操作之前,请确保您已经使用params[:news_id]进行了设置,并且您需要在Rails控制台中检查输出(如果使用webrick服务器)。 - Rahul garg
我正在使用 Aptana Studio,但控制台中没有任何内容。 - user1107922
你能运行 rake routes 并在此处发布结果吗?(与评论控制器相关的路由) - Rahul garg
新闻评论 GET /news/:news_id/comments(.:format) comments#index 发布评论 POST /news/:news_id/comments(.:format) comments#create 新建新闻评论 GET /news/:news_id/comments/new(.:format) comments#new - user1107922
编辑新闻评论 GET /news/:news_id/comments/:id/edit(.:format) comments#edit 新闻评论 GET /news/:news_id/comments/:id(.:format) comments#show 更新新闻评论 PUT /news/:news_id/comments/:id(.:format) comments#update 删除新闻评论 DELETE /news/:news_id/comments/:id(.:format) comments#destroy - user1107922

1
我在使用生产环境中的PostgreSQL数据库开发Ruby on Rails应用时,遇到了同样的问题。
以下是我解决这个问题的方法:
问题在于我在开发环境中使用新的迁移文件添加了一些新列到表中,但当我将其推送到生产环境时,我没有通过迁移创建那些新列。
我所要做的就是在生产环境中运行数据库迁移,使用在开发环境中生成的迁移文件来创建那些新列。
rails db:migrate

我希望您能从中受益。

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接