Ich verwende Rails_admin für Admin-Panel. Gerade Assoziationsmodell in Bild ActiveRecord :: StatementInvalid PG :: UndefinedColumn: Fehler
Von diesem
class Image < ApplicationRecord
belongs_to :user
belongs_to :product
end
dieser
class Image < ApplicationRecord
has_one :user
has_one :product
end
und User-Modell
ändern istclass User < ApplicationRecord
has_many :images,dependent: :destroy
end
immer diese Fehlermeldung, wenn ich versuche Benutzer Admin zu bearbeiten panel.Von der anderen Seite funktioniert es gut.
ActiveRecord::StatementInvalid at /user/72/edit
PG::UndefinedColumn: ERROR: column users.image_id does not exist
LINE 1: SELECT "users".* FROM "users" WHERE "users"."image_id" = $1...
^
: SELECT "users".* FROM "users" WHERE "users"."image_id" = $1 LIMIT $2
Ich verstehe Ihre Erklärung, aber ich verwende eine einzige Bildtabelle für Benutzer und Produkt. Das Benutzerbild wird zum Zeitpunkt new_user und edit_user sowie für das Produkt gespeichert. Benutzer kann maximal 3 Bilder haben. Benutzer und Produkt haben keine direkte Beziehung, es ist wie dieser Benutzer-> Shop-> Produkte. Aber wenn ich gehört, gehört für beide Benutzer und Produkt ihre Ids in Image-Tabelle, die ich nicht will. Wenn ein Benutzer ein Bild als in der Image-Tabelle speichert, ist product_id gleich null und umgekehrt, und dies geschieht nicht im Fall von "belongs_to". –
Das macht Sinn und eine Bildtabelle ist gutes Design; In diesem Fall benötigen Sie möglicherweise eine Schnittstellentabelle mit den Spalten "entity, entity_id, image_id". Entity wäre der Klassenname und die ID. Eine Zeile wäre also etwa "User, 1, 2", wobei 1 die user_id und ist 2 ist die Bild_ID. Ich ermutige Sie erneut, etwas wie Attachinary zu verwenden, das all diese Einstellungen für Sie übernimmt. – quetzaluz
Noch ein Hinweis darauf, dass das "has_many" auch eine "through:" Deklaration benötigt. Mehr Informationen dazu hier: http://guides.rubyonrails.org/association_basics.html # the-has-many-through-association – quetzaluz