1

我创建了一个名为 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

无效的类似问题:

rails表单数据没有保存到数据库

Ruby on rails - 回形针不保存到数据库

4

3 回答 3

2

我有一个类似的问题。

状态模型:

class CreateStatuses < ActiveRecord::Migration
  def change
    create_table :statuses do |t|
      t.string :name

      t.timestamps
    end
  end
end

在 seed.rb 中:

Status.create([{ name: "Administrator" }, { name: "Writer" }])

当我运行 rake db:seed 时,创建了一行,但在名称字段中没有插入任何内容。我认为这与新的 rails 4 功能有关:强参数这里给出了很好的例子。

要使种子工作:

  • 在 Gemfile 我添加:gem 'protected_attributes'然后运行bundle install
  • 在模型中(status.rb):

    class Status < ActiveRecord::Base
        attr_accessible :name
    end
    
于 2013-10-21T15:19:48.730 回答
1

尝试create将问题作为例外来揭示:

Project.create!(
    title: "Project",
    description: "a project",
    image: "http://i.imgur.com/.png",
    date_start: Time.now)

然后修复它:-)

于 2013-09-02T22:13:14.500 回答
0

在多次调整项目后。我得出的结论是它必须以某种方式被窃听。我通过删除所有“项目”文件(控制器、视图、模型)并使用脚手架命令重新生成它们来解决了这个问题。它现在按预期工作。

于 2013-09-03T22:30:09.600 回答