私はこのような多くのpotstを読みましたが、私が見たすべての解決策は、モデルの命名法、命名法、およびRails規則)にあります。
今、私はこの問題を抱えていますPostgreSQL 9.1の本番環境で初めて実行します
rake db:migrate Rails_ENV=production
または
rake db:schema:load Rails_ENV=production
問題なくデータベースを作成できました:rake db:create Rails_ENV=production
=> OK
エラーがあります
rake aborted!
PG::UndefinedTable: ERROR: relation "categories" does not exist
LINE 5: WHERE a.attrelid = '"categories"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"categories"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
そして、モデルはすべてのRails命名規則に従います。そのため、このエラーが何を示しているのかわかりません¿このエラーを引き起こす可能性のあるものは他にありますか?
モデル:
class Category < ActiveRecord::Base
has_many :subcategories
end
class Subcategory < ActiveRecord::Base
belongs_to :category
end
shema.rb:
ActiveRecord::Schema.define(version: nnnn) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "categories", force: true do |t|
t.string "name"
t.text "comments"
t.datetime "created_at"
t.datetime "updated_at"
t.decimal "amount_need_comments", precision: 6, scale: 2
t.decimal "amount", precision: 6, scale: 2
t.decimal "amount_per_unit", precision: 6, scale: 2
t.integer "teletrabajo", limit: 2, default: 0, null: false
t.decimal "amount_need_city", precision: 6, scale: 2
end
create_table "subcategories", force: true do |t|
t.string "name"
t.text "comments"
t.integer "category_id"
t.datetime "created_at"
t.datetime "updated_at"
t.decimal "amount_need_comments", precision: 6, scale: 2
t.decimal "amount", precision: 6, scale: 2
t.decimal "amount_per_unit", precision: 6, scale: 2
t.decimal "amount_need_city", precision: 6, scale: 2
end
そして最後に、私はこのようなことを試みましたが、成功しませんでした
inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'category', 'categories'
inflect.irregular 'subcategory', 'subcategories'
inflect.plural 'category', 'categories'
inflect.plural 'subcategory', 'subcategories'
end
そして、次のように、関係するモデルの関係を削除します。
class ExpenseDetail < ActiveRecord::Base
# belongs_to :expense
# belongs_to :category
# belongs_to :subcategory
default_scope :order=>"id"
validate :expense_date...
.。
同じ問題があり、移行時に複数形のテーブル名がないことがわかりました。
例えば:
class CreatePosts ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :source
t.string :destination
t.datetime :time
t.timestamps
end
end
end
create_table :post
がありますが、create_table :posts
に変更すると。動作し始めます!!!!
rake test
を実行すると、再び自分のエラーが発生しました!!しかし、この場合、cedricdlbのおかげで here ソリューション、非常に簡単です:
rake db:test:prepare
rake db:test:load