ruby-on-rails - Rails 4 不存储数据、种子或默认模型保存

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

我创建了一个名为 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 在数据库中保存了一条记录,但没有设置任何字段。我在模型中放置了一个 validate presence 以确保它确实在获取一些数据,但它不会抛出任何错误。

我还检查了我的 Controller 以确保它允许我修改变量

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

最佳答案

我遇到了类似的问题。

状态模型:

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
    

关于ruby-on-rails - Rails 4 不存储数据、种子或默认模型保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581075/

相关文章:

ruby-on-rails - 跨域用户认证

ruby-on-rails - 如何基于正则表达式执行事件记录搜索

ruby-on-rails - 有没有办法将当前的 url 拉到 Controller 中?

php - 从数据库中获取两个图像路径并将它们循环显示在 slider 中

python - 递归错误 - 分离度

mysql - 从 rails 中的另一个对象创建一个对象

ruby-on-rails - 一旦启用 Action 缓存,format.js 就不会操作 dom

ruby - 使用 step 遍历数组

ruby-on-rails - 我需要帮助找出在 Rails 中查询这个的最佳方法

mysql - 如何在不选择整个结果集中的情况下获取结果集中的 "next row"和 "previous row"?