Dies ist mein Code für Daten von meinem alten Datenbank zu bewegen:Ruby on Rails, has_many definieren Klassenname für polymorphe Beziehung
class Old < ActiveRecord::Base
establish_connection :old_version
self.abstract_class = true
class Recipe < self
set_table_name :recipes
has_many :uploaded_files, :as => :storage
end
class UploadedFile < self
set_table_name :uploaded_files
belongs_to :storage, :polymorphic => true
end
end
Wenn ich den folgenden Code
Old::Recipe.all.each do |recipe|
puts recipe.uploaded_files.to_sql
end
Es führt diese laufen SQL
SELECT `uploaded_files`.* FROM `uploaded_files` WHERE `uploaded_files`.`storage_id` = 38 AND `uploaded_files`.`storage_type` = 'Old::Recipe'
Das Problem ist, dass ich bekommen:
`storage_type` = 'Old::Recipe'
Aber ich brauche:
`storage_type` = 'Recipe'
Wie kann ich die Klasse für eine polymorphe Beziehung ändern?
Das Dokument für has_many
gibt mir keine Antwort.
Gibt es einen Grund, warum die Rezeptklasse in der Klasse Old verschachtelt ist? – pixeltrix
Vielleicht wurde dies in eine Rails Engine @pixeltrix verschoben. Hat jemand eine bessere Antwort dafür? – Jwan622