Я использую rails_admin для панели администратора. Просто изменить ассоциации в модели ImageActiveRecord :: StatementInvalid PG :: UndefinedColumn: ERROR
От этого
class Image < ApplicationRecord
belongs_to :user
belongs_to :product
end
к этому
class Image < ApplicationRecord
has_one :user
has_one :product
end
и пользователя модели
class User < ApplicationRecord
has_many :images,dependent: :destroy
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 изображения. пользователь и продукт не имеют прямого отношения, это похоже на этот продукт user-> store->. Но когда я использую own_to для пользователя и продукта, их идентификаторы требуются в таблице изображений, которая мне не нужна. если пользователь сохраняет изображение, чем в таблице изображений product_id имеет значение null и наоборот, и это не происходит в случае belongs_to. –
Это имеет смысл, и одна таблица изображений - хороший дизайн; в этом случае вам может потребоваться иметь таблицу пересечений столбцов «entity, entity_id, image_id». Entity будет именем класса и идентификатором, поэтому строка будет выглядеть как «User, 1, 2», где 1 является user_id и 2 - image_id. Я снова призываю вас использовать что-то вроде Attachinary, которое обрабатывает всю эту настройку для вас. – quetzaluz
Еще одно примечание: «has_many» также нуждается в декларации «через:». Подробнее об этом здесь: http://guides.rubyonrails.org/association_basics.html # the-has-many-through-association – quetzaluz