4
adminパネルにrails_adminを使用しています。ただ、モデルがActiveRecord :: StatementInvalid PG :: UndefinedColumn:ERROR
class User < ApplicationRecord
has_many :images,dependent: :destroy
end
私は管理者からユーザーを編集しようとすると、このエラーを得ているこの
class Image < ApplicationRecord
has_one :user
has_one :product
end
とユーザーにこの
class Image < ApplicationRecord
belongs_to :user
belongs_to :product
end
からイメージモデルに
を関連付けを変更反対側からはうまくいきます。
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
私はあなたの説明を理解していますが、ユーザーと製品の両方に単一のイメージテーブルを使用しています。ユーザーイメージは、new_userおよびedit_userの時点で保存され、製品と同じです。ユーザーは最大3つの画像を持つことができます。ユーザーと製品はこのユーザーのような直接関係はありません - >ストア - >製品。しかし、私はあなたと私の両方のためにbelongs_toを使用している私のidsは私がしたくない画像テーブルに必要です。ユーザが画像テーブル内の画像よりも画像を保存する場合、product_idはnullであり、逆もまた同様であり、これはbelongs_toの場合には起こらない。 –
それは理にかなっており、1つの画像テーブルは良いデザインです。この場合、 "entity、entity_id、image_id"という列の交差テーブルが必要な場合があります。エンティティはクラス名とIDなので、行は "User、1、2"のようになります。 2はimage_idです。 Attachinaryのようなものを使用することをお勧めします。Attachinaryは、このセットアップのすべてを処理します。 – quetzaluz
もう1つの注意点は、「has_many」には「through:」宣言も必要であるということです。その詳細はこちら:http://guides.rubyonrails.org/association_basicshtml#the-has-many-through-association – quetzaluz