Ich denke, es ist eher ein "Model Design" Problem als ein Schienenproblem.Schienen has_many STI mit Sub STI
Aus Gründen der Klarheit hier ist die Geschäftslogik: Ich habe Veranstaltungsorte und ich möchte mehrere APIs implementieren, um Daten über diese Veranstaltungsorte zu erhalten. All diese APIs haben viel gemeinsam, daher habe ich STI verwendet.
Dieser Teil funktioniert, jetzt, was ich versuche hinzuzufügen ist Fotos zum Veranstaltungsort. Ich werde diese Fotos von der API holen und mir wird klar, dass jede API anders sein könnte. Ich dachte über STI mit für das auch, und ich werde mit etwas wie das
# /app/models/api_photo.rb
class ApiPhoto < ApplicationRecord
belongs_to :api
end
# /app/models/google_api_photo.rb
class GoogleApiPhoto < ApiPhoto
def url
"www.google.com/#{reference}"
end
end
# /app/models/other_api_photo.rb
class OtherApiPhoto < ApiPhoto
def url
self[url] || nil
end
end
Mein Ziel dieses < ApplicationRecord am Ende # /app/models/venue.rb Klasse Ort sein haben, am Ende has_one: google_api has_one: other_api has_many: apis has_many: Fotos: durch =>: apis Ende
# /app/views/venues/show.html.erb
<%# ... %>
@venue.photos.each do |photo|
photo.url
end
<%# ... %>
Und photo.url gibt mir das Recht formattin g das ist abhängig von der api es ist.
Da ich tiefer in die Integration gehe, scheint etwas nicht richtig. Wenn ich Api
die has_many :google_api_photo
hätte, dann wird jede API GoogleApiPhoto haben. Was macht für mich keinen Sinn?
Irgendeine Idee, wie ich von hier fortfahren sollte?