J'utilise ActiveRecord dans Ruby on Rails.Héritage de table ActiveRecord à l'aide de set_table_names
J'ai une table nommée documents (classe Document) et je veux avoir une autre classe data_documents (DataDocument) qui est effectivement la même sauf pour avoir un nom de table différent. En d'autres termes, je veux deux tables avec le même comportement, sauf pour le nom de la table.
class DataDocument < Document
#set_table_name "data_documents"
self.table_name = "data_documents"
end
Ma solution était d'utiliser l'héritage de classe comme ci-dessus, mais il en est résulté déclaration incompatible SQL pour créer l'opération où il y a à la fois la table « documents » et table « data_documents ». Pouvez-vous comprendre pourquoi et comment je peux le faire fonctionner?
>> DataDocument.create(:did=>"dd")
ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'data_documents.did' in 'where clause': SELECT `documents`.id FROM `documents` WHERE (`data_documents`.`did` = BINARY 'dd') LIMIT 1
from /Users/lifidea/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log'
from /Users/lifidea/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/mysql_adapter.rb:320:in `execute'
from /Users/lifidea/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/mysql_adapter.rb:595:in `select'
from /Users/lifidea/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache'
from /Users/lifidea/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all'