我遇到了似乎导致问题的SQLiteException。
Schema.rb
create_table "features", force: :cascade do |t|
t.string "name_key"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "features", ["name_key"], name: "index_features_on_name_key"
create_table "organizations", force: :cascade do |t|
t.string "name"
t.string "code"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "organizations_features", id: false, force: :cascade do |t|
t.integer "organization_id"
t.integer "feature_id"
end
这是当前架构,我明确地创建了表organization_features(仍然通过迁移但是引用连接表的单独迁移),否则create_join_table将创建“features_organizations”。在那个过程中,如果我运行
rake db:drop db:create db:schema:load
即使没有在任何表中加载单个记录,我仍然会收到以下错误(我从未运行db:seed)。
ActiveRecord::StatementInvalid: SQLite3::SQLException: near ")": syntax error: INSERT INTO "organizations_features" () VALUES ()
other question似乎建议使联接表名称在organization_feature中都是单数,但由于我们与其他服务共享模式,因此我们必须使用相同的命名约定。
注意:即使我尝试使用迁移“create_join_table”创建表,问题似乎仍然存在“
更新:seeds.rb
organization = Organization.create!(name: 'XYZ', code: 'xyz')
feature = Feature.create!(name_key: 'Some Feature')
user = User.create!(name: "user1",
email: "user@abcd.org",
password: "password123",
password_confirmation: "password123",
profile_id: profile.id)
OrganizationsFeature.create!(feature_id: feature.id, organization_id: organization.id)
其中OrganizationsFeature看起来像这样
class OrganizationsFeature < ActiveRecord::Base
belongs_to :organization
belongs_to :feature
end
答案 0 :(得分:0)
如果其他人遇到同样的问题我找到了问题的答案。 test / fixtures / organizations_features.yml文件具有空记录
one :{}
two: {}
导致将空记录插入表中。每次加载此数据,因此插入错误。 拥有适当的数据/删除文件解决了这个问题。