我正在使用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。请帮帮我。
谢谢:)
答案 0 :(得分:2)
问题在于Blog
模型和attr_accessor
语句。简而言之,它为这两个字段添加了getter和setter,并覆盖了默认的ActiveRecord
行为。只需删除它,你就会发现它有效。
此外,无需添加attr_accessible :title, :content
,因为自Rails 4使用strong parameters后。