Rails:插入查询:缺少列

时间:2014-11-08 07:00:31

标签: ruby-on-rails activerecord

我正在使用rails 4.0进行开发。我创建了一个包含两个字段的博客模型:标题和内容。

这是我的模型文件:

# == Schema Information
#
# Table name: blogs
#
#  id         :integer          not null, primary key
#  title      :string(255)
#  content    :string(255)
#  created_at :datetime
#  updated_at :datetime
#

class Blog < ActiveRecord::Base
  attr_accessible :title, :content
  attr_accessor :title, :content
end

这是我的数据库迁移:

class CreateBlogs < ActiveRecord::Migration
  def change
    create_table :blogs do |t|
      t.string :title
      t.string :content

      # create magic column created_at and updated_at
      t.timestamps
    end
  end
end

我使用rails sandbox console进行测试。

b = Blog.new
b.title = "blog"
b.content = "blog"
b.save # return true

然后控制台通知我:

INSERT INTO "blogs" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2014-11-08 04:44:40.966670"], ["updated_at", "2014-11-08 04:44:40.966670"]]

这意味着插入查询错过了标题和内容字段。我不知道如何调试并查看此查询生成的位置。另外我不知道如何修复这个bug。请帮帮我。

谢谢:)

1 个答案:

答案 0 :(得分:2)

问题在于Blog模型和attr_accessor语句。简而言之,它为这两个字段添加了getter和setter,并覆盖了默认的ActiveRecord行为。只需删除它,你就会发现它有效。

此外,无需添加attr_accessible :title, :content,因为自Rails 4使用strong parameters后。