2017-01-30 16 views
0

Невероятно новый для Rails и попробовал несколько вещей здесь без успеха.Rails Вложенная форма Создание неправильного внешнего ключа

Моя проблема в том, когда я отправляю в базу данных эту вложенную форму, одну из моих таблиц (apartment_images) с неправильным внешним ключом (apartment_id).

У меня есть довольно сложная модель отношения: У меня есть здания has_many_through другой таблица, которая связывает его с (среди прочих) в Apartments стола. Проблемный apartment_images стол принадлежит Апартаменты.

, сокращенная версия ниже:

модели здания

has_many :building_relationships 
has_many :apartments, :through => :building_relationships 
accepts_nested_attributes_for :apartments, allow_destroy: true 

квартира Модель

belongs_to :building 
has_many :apartment_images, -> { order(position: :asc) }, dependent: :destroy 
has_many :building_relationships 
has_many :buildings, :through => :building_relationships 

ApartmentImage Модель

belongs_to :apartment 

buildings_controller (исключенных новый метод)

def createNewBuilding 
    @building = Building.new(building_params) 
    @apartment = Apartment.where(building_id: @building.id) 
     #also tried this but results in no id being save: 
     #@apartment = @building.apartments.build(apartment_params) 

if @building.save 
     redirect_to newBuilding_path, notice: "Successfully created building" 
    else 
     render 'newBuilding'#, notice: "ERROR" 
    end 


    if apartment_image_params 
     apartment_image_params[:image].each do |value| 
     @apartment.apartment_images.build({image: value}).save 
      end 
    end 

    end 

def apartment_image_params 
     #also tried adding :apartment_id. didn't work. 
     params.require(:apartment_image).permit(:id, image: []) if params[:apartment_image] 
end 
+0

я мог быть недоразумением, но внешний ключ для apartment_image _should_ быть apartment_id, поскольку каждое изображение принадлежит к одному и только одна квартира, и каждая квартира может иметь несколько изображений. Можете ли вы подробно остановиться на своей проблеме? – jjk

+0

в основном, когда я нажимаю submit на форме и проверяю базу данных, она будет размещать изображение или изображения, но свяжет его с неправильным квартирным_идом (т. Е. Не созданной квартирой из формы) – Noobprogrammer

+0

Почему вы используете 'has_many, хотя:' отношения между зданием и квартирой? неужели квартира не может быть в нескольких зданиях? – max

ответ

0

поэтому я, наконец, получил его на работу. Не совсем понимаю, почему это сработало против того, что я делаю, но буду читать на нем (но я тоже все уши, если это очевидно для вас, парни :)).

Ответ был переключаться с помощью Where/найти/findby заявление с помощью Rails магии:

def createNewBuilding 
@building = Building.new(building_params) 
@apartments = @building.apartments 
@apartments.each do |apartments| 

 Смежные вопросы

  • Нет связанных вопросов^_^