2016-06-22 16 views
0

Wie ist die space_listing_id ist leer, nachdem ich säen?Die ID ist nach dem Seeding mit geschachtelten Attributen auf Ruby on Rails nicht verknüpft.

Ich habe dies auf meinem Modell.

class SpaceListing < ActiveRecord::Base 
    belongs_to :user 
    has_many :images, dependent: :destroy 
    has_many :bookings, dependent: :destroy 
    has_many :favorites 
    has_many :reviews, dependent: :destroy 
    accepts_nested_attributes_for :images, allow_destroy: true 

validates :title, presence: true 
validates :description, presence: true 
validates :day_rent, presence: true 
validates :monthly_rent, presence: true 
validates :space_type, presence: true 
validates :environment_type, presence: true 
validates :size_length, presence: true 
validates :size_width, presence: true 
validates :size_height, presence: true 
end 

Dies ist, was meine seed.rb hat:

SpaceListing.create!([ 
    { 
user_id: 1, 
title: "Hipster Vest", 
description: "Hipster's favorite spot", 
street_number: "10", 
route: "Hipster Street", 
city: "San Francisco", 
state: "CA", 
zip_code: "94108", 
country: "United States", 
space_type: "Garage", 
environment_type: "Outdoor", 
monthly_rent: 100, 
day_rent: 3, 
size_width: 10, 
size_height: 10, 
size_length: 10, 
latitude: 37.7875474, 
longitude: -122.4049517, 
images_attributes: [ 
    {image_url: "https://media.giphy.com/media/26BRwxtVBt8dWEuGs/giphy.gif", 
    space_listing_id: }, 
    {image_url: "https://media.giphy.com/media/l3UcgEIw80eyb36kU/giphy.gif"} 
    ] 
} 
]) 

Antwort

2

accepts_nested_attributes erstellt ein neues Attribut, das in Active Methoden, wie .Create und .update geben werden kann. In Ihrem Fall wird dieses Attribut :images_attributes genannt.

Der folgende Code wird Ihr Problem lösen.

SpaceListing.create!([ 
    { 
    user_id: 1, 
    title: "Hipster Vest", 
    description: "Hipster's favorite spot", 
    street_number: "10", 
    route: "Hipster Street", 
    city: "San Francisco", 
    state: "CA", 
    zip_code: "94108", 
    country: "United States", 
    space_type: "Garage", 
    environment_type: "Outdoor", 
    monthly_rent: 100, 
    day_rent: 3, 
    size_width: 10, 
    size_height: 10, 
    size_length: 10, 
    latitude: 37.7875474, 
    longitude: -122.4049517, 
    images_attributes: [ 
     { image_url: "https://media.giphy.com/media/26BRwxtVBt8dWEuGs/giphy.gif"}, 
     { image_url: "https://media.giphy.com/media/l3UcgEIw80eyb36kU/giphy.gif"} 
    ] 
    } 
]) 

UPDATE: Sie scheinen die Frage aktualisiert zu haben. Ich werde es beantworten. Sie müssen :space_listing_id nicht in die Attribut-Hashes einschließen. Unter Verwendung des oben angegebenen Codes ordnet Rails die Datensätze automatisch zu und füllt den Schlüssel :space_listing_id.