Ich habe ein Ereignis, das zu Wiederholen gehört und ich versuche, den Wiederholungstitel anzuzeigen, wenn ein Ereignis angezeigt wird. Aber ich will nicht zwei Datenbankaufrufe, die dieseActiveRecord :: StatementInvalid in Controller bei Verwendung eines ActiveRecord mit einem Tabellennamen und einer Postgresql-Ansicht
@event.Repeat.title
machen würde habe ich eine postgresql Ansicht mit einer Migration unter
class EventWithRepeat < ActiveRecord::Migration[5.1]
def up
self.connection.execute %Q(create view event_with_repeat as
Select events.*, repeats.title as RepeatTitle from Events
inner join repeats on events.repeat_id = repeats.id;)
end
def down
self.connection.execute %Q(drop view event_with_repeat;)
end
end
Das Problem ist auf jeden Fall mit der Migration oben. Ich kann diese Migration nicht einfach ausführen. Ausführen von Rake db: migrieren tut nichts. Rake db: migrate: down mit der Version führt zu einem Fehler, weil die Relation nicht existiert und nicht gelöscht werden kann.
Das Erstellen der SQL-Ansicht direkt in der Datenbank funktioniert, aber meine Migration scheint nicht ausgeführt werden. Ich bin mit Schienen 5.
Dies ist meine Klasse Active
class EventRepeat < ActiveRecord::Base
self.table_name = "event_with_repeat"
self.primary_key = "id"
def readonly?
true
end
end
Dies ist die Methode in meinem Controller-Klasse
def show
@event = EventRepeat.find(params[:id])
end
ich die Migrationen lief und ich kann die Ansicht in psql so die Aussicht ist vorhanden. Ich habe db: reset gemacht, aber das hat nicht geholfen.
Die Fehlermeldung zeigt, dass das Problem mit dieser SQL ist
SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
c.collname, col_description(a.attrelid, a.attnum) AS comment
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
WHERE a.attrelid = '"event_with_repeat"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
und die Fehlermeldung ist
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "event_with_repeat" does not exist
aber die Aussicht event_with_repeat existiert.
Ich habe dies in meiner Ansicht
<%= @event.RepeatTitle %>
Irgendwelche Ideen, wie man diese Fehler zu beheben und was falsch war mit dem Code?
Danke.