【问题标题】:Rails: Unknown attribute during model createRails:模型创建期间的未知属性
【发布时间】:2012-09-21 18:59:25
【问题描述】:

我收到一条错误消息 - “未知属性:news_id”,但我不明白问题出在哪里。我有新闻控制器,我想为每个新闻创建 cmets。我希望有人能帮助我。提前致谢。

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 的字段?
  • 我的评论表有这些列 - ID、News_ID、内容

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord


【解决方案1】:

这是因为您尚未将:news_id 添加到您的Comment 的模型中。

编写迁移将news_id添加到评论中,您的问题将得到解决。

【讨论】:

  • 在评论模型中添加 attr_accessible :news_id 但还是不行
  • 这也是我的主要猜测;不过,我们不能确定,因为您没有显示您的 schema.rb
  • create_table "cmets", :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
  • 它必须是 t.integer :news_id ,而不是 t.integer News_ID
  • 谢谢,这解决了我的问题 :)
【解决方案2】:

您可以在您的create 操作开始时打印出puts params 的参数,以检查它发送的实际属性。

或者您可以查看您拥有的路线以进行评论创建操作以获取参数..

【讨论】:

  • 当我在创建操作中使用 puts 参数打印时,我看不到哈希,我收到了错误消息。也许我做错了什么?
  • 您在操作的第一行执行此操作...在使用 params[:news_id] 之前...并且您需要检查 rails 控制台中的输出(如果使用 webrick 服务器)
  • 我正在使用 Aptana studio,控制台中没有任何内容
  • 你能运行rake routes 并在此处发布结果吗...(用于 cmets 控制器相关路由)
  • news_cmets GET /news/:news_id/cmets(.:format) cmets#index POST /news/:news_id/cmets(.:format) cmets#create new_news_comment GET /news/:news_id/cmets /new(.:format) cmets#new
【解决方案3】:

在生产环境中使用 PostgreSQL 数据库处理 Ruby on Rails 应用程序时,我遇到了同样的问题。

我是这样解决的

问题是我使用我生成的新迁移文件向我的开发环境中的表添加了一些新列,但是当我推送到生产环境时,我也没有通过迁移创建这些新列。

我所要做的就是在生产环境中简单地运行数据库迁移,以使用在开发环境中生成的迁移文件创建这些新列。

rails db:migrate

就是这样。

我希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多