【问题标题】:Rails 4 not storing data, in seeds, or default model savingRails 4 不存储数据、种子或默认模型保存
【发布时间】:2013-09-06 00:38:10
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我遇到了类似的问题。

    状态模型:

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

    在种子.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
      

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        尝试 bang create 将问题显示为异常:

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

        然后修复它:-)

        【讨论】:

        • 尝试添加 !运算符到 create 方法,它没有显示任何异常或错误。它也没有改变它放在数据库中的内容。
        • @Rizowski 抱歉,没有更多的想法 :(
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 2018-10-09
        相关资源
        最近更新 更多