Я использую ActiveRecord в Ruby on Rails.
У меня есть таблица с именем Documents (класс документа), и я хочу иметь другой класс data_documents (DataDocument) таблицы, который фактически такой же, за исключением того, что у него другое имя таблицы. Другими словами, я хочу две таблицы с одинаковым поведением, кроме имени таблицы.
class DataDocument < Document
#set_table_name "data_documents"
self.table_name = "data_documents"
end
Мое решение состояло в том, чтобы использовать наследование классов, как описано выше, но это привело к несогласованному оператору SQL для операции создания, в которой есть как таблица 'Documents', так и таблица 'data_documents'. Вы можете понять, почему и как я могу заставить это работать?
>> 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'