我创建了一个名为Project的简单模型。 Project有几个属性title,description,image_path,date_started,date_ended。当我尝试用这个
来播种我的项目时Project.create(
title: "Project",
description: "a project",
image: "http://i.imgur.com/.png",
date_start: Time.now)
它实际上并没有将其保存到数据库中。它通过分配ID但没有设置任何字段来保存数据库中的记录。我在模型中放置了一个验证存在,以确保它实际上获取了一些数据,但它不会引发任何错误。
我还检查了我的控制器以确保它允许我修改变量
def project_params
params.require(:project).permit(:title, :description, :image_path, :date_started, :date_ended)
end
我不完全确定为什么这不会保存到数据库并且坦率地说没有想法。
我使用的数据库是Postgres。
修改 - 添加了架构
ActiveRecord::Schema.define(version: 20130902003818) do
create_table "projects", force: true do |t|
t.string "title"
t.text "description"
t.string "image"
t.date "date_start"
t.date "date_end"
t.datetime "created_at"
t.datetime "updated_at"
end
end
不起作用的类似问题:
答案 0 :(得分:2)
我有类似的问题。
状态模型:
class CreateStatuses < ActiveRecord::Migration
def change
create_table :statuses do |t|
t.string :name
t.timestamps
end
end
end
在seeds.rb中:
Status.create([{ name: "Administrator" }, { name: "Writer" }])
当我运行rake db:seed时,创建了一行但在名称字段中没有插入任何内容。 我认为这与新的rails 4功能有关:strong parameters。 给出了很好的例子here。
使种子工作:
gem 'protected_attributes'
然后运行bundle install
在模型(status.rb)中:
class Status < ActiveRecord::Base
attr_accessible :name
end
答案 1 :(得分:0)
尝试敲打create
以将问题显示为例外:
Project.create!(
title: "Project",
description: "a project",
image: "http://i.imgur.com/.png",
date_start: Time.now)
然后解决它: - )
答案 2 :(得分:0)
多次调整项目后。我得出的结论是,它必须以某种方式被窃听。我通过删除所有“项目”文件(Controller,Views,Model)解决了这个问题,并使用scaffold命令重新生成它们。它现在按预期工作。