Rails 4不存储数据,种子或默认模型保存

时间:2013-09-02 21:36:26

标签: ruby-on-rails ruby database postgresql ruby-on-rails-4

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

不起作用的类似问题:

rails form data not getting saved to db

Ruby on rails - paperclip not saving to database

3 个答案:

答案 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

使种子工作:

  • 在Gemfile中我添加了: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命令重新生成它们。它现在按预期工作。