为什么ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:near“)”:语法错误:INSERT INTO“user_friendships”()VALUES()

为什么ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:near“)”:语法错误:INSERT INTO“user_friendships”()VALUES()

试图测试时:

$ ruby​​ -I test test / unit / user_friendships_test.rb

require 'test_helper' class UserFriendshipsTest < ActiveSupport::TestCase should belong_to (:user) should belong_to (:friend) test "that creating a frinedship works without raising an exception" do assert_nothing_raised do UserFriendship.create user: users(:a), friend: friends(:b) end end end 

任何的想法?

更新:他是Schema.rb的一部分

 create_table "user_friendships", :force => true do |t| t.integer "user_id" t.integer "friend_id" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "user_friendships", ["user_id", "friend_id"], :name => "index_user_friendships_on_user_id_and_friend_id" create_table "users", :force => true do |t| t.string "first_name" t.string "last_name" t.string "profile_name" t.string "email", :default => "", :null => false t.string "encrypted_password", :default => "", :null => false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", :default => 0, :null => false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end add_index "users", ["email"], :name => "index_users_on_email", :unique => true add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true end 

我也碰到了这个。 这似乎与搞砸铁路命名惯例有关。 在我的例子中,做“rails g model activity_item”而不是“rails g model activity_items”解决了这个问题。