Rails e Hobo com problema de herança de mesa única
-
22-09-2019 - |
Pergunta
Estou recebendo um erro ao executar db:setup
Para o meu projeto HOBO com um banco de dados limpo. Eu tenho dois modelos, A e B, onde B estende por uma infância de mesa única. Criar tudo funciona. Mas se eu começar com um novo banco de dados, Rake falhará com um erro:
$ rake db:setup
...
rake aborted!
Table as does not exist
Aqui estão as etapas pelas quais passei para reproduzir isso. Primeiro, crie o aplicativo Hobo:
$ hobo testproject
Crie o primeiro modelo, A
:
$ ruby script/generate hobo_model_resource a name:string type:string
Configurar database.yml, gerar e executar a migração:
$ ruby script/generate hobo_migration
Crie o segundo modelo, B
:
$ruby script/generate hobo_model_resource b
Editar o B
modelo para estender A
:
class B < A
# --- Permissions --- #
def create_permitted?
acting_user.administrator?
end
def update_permitted?
acting_user.administrator?
end
def destroy_permitted?
acting_user.administrator?
end
def view_permitted?(field)
true
end
end
Gerar e executar a migração:
$ ruby script/generate hobo_migration
Pronto. Tudo funciona bem. Agora, se eu excluir todas as mesas e correr db:setup
, Falha:
$ rake db:setup
...
rake aborted!
Table as does not exist
Seguindo as sugestões em Ruby on Rails Tabela única herança (STI) e problema de teste de unidade (com PostgreSQL), Eu tentei remover test/fixtures/as.yml
e test/fixtures/bs.yml
, mas isso não ajudou.
Hobo 0.9.103
Rails 2.3.5
Rake 0.8.7
Jruby 1.4.0rc1
Alguma sugestão?
Solução
Parece que é um bug no hobo:
http://groups.google.com/group/hobousers/browse_thread/thread/2160e78762791946
De acordo com Matt Jones:
O rastreio tem o código de escopo automático tentando ver se herdado_without_ineritable_attributes é uma coluna, que atinge o
DB e morre.
Ele sugere acrescentar:
return unless table_exists?
no início do column
Método (linha 211 de hobofields/lib/hobo_fields/model_extensions.rb
).
Outras dicas
Eu segui todos os seus passos e tudo funcionou bem. Você tentou rake db:schema:load
?
hobo 0.9.104
rails 2.3.5
rake 0.8.6
ruby 1.8.6