首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Model.create SQLite3::SQLite3异常

Rails Model.create SQLite3::SQLite3异常
EN

Stack Overflow用户
提问于 2012-07-11 04:19:40
回答 1查看 521关注 0票数 2

我是Rails的初学者,我在使用Rails的迁移将行插入数据库时遇到了问题。

代码语言:javascript
复制
class Actions < ActiveRecord::Migration
  def up
    create_table :actions do |t|
      t.integer :channel_id
      t.string :name
      t.text :description
      t.integer :weight

      t.timestamps
    end

    add_index :actions, :channel_id

    Actions.create :name => 'name', :description => '', :weight => 1, :channel_id => 1
  end

运行此代码将导致:

代码语言:javascript
复制
==  Actions: migrating ========================================================
-- create_table(:actions)
   -> 0.0076s
-- add_index(:actions, :channel_id)
   -> 0.0036s
-- create({:name=>"name", :description=>"", :weight=>1, :channel_id=>1})
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: unrecognized token: "{": {:name=>"name", :description=>"", :weight=>1, :channel_id=>1}

操作模型:

代码语言:javascript
复制
class Actions < ActiveRecord::Base
  belongs_to :channels
  attr_accessible :name, :description, :weight, :channel_id
end

我不知道花括号是从哪里来的,也不知道它们为什么会导致异常。谁能帮我解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-11 04:27:21

哦哦,您的迁移类名似乎与您试图访问的模型(Actions)的名称相同。因此,将在迁移类上调用create方法,而不是模型类,它可能会尝试使用您的散列或其他方法创建表。这就是您收到该错误消息的原因。

重命名您的迁移类(以及它的文件,以保持一致性),它应该可以正常运行:

代码语言:javascript
复制
class CreateActions < ActiveRecord::Migration
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11421295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档