2016-07-08 19 views
3

我正在使用Rails 4.2.3在我的數據庫中,我有一個帶有「address_id」的「my_objects」表鍵回到「地址」表。我有這個在我的應用程序/模型/ my_object.rb文件...儘管在我的模型中包含「:autosave => true」,Rails並未保存我的關聯

class MyObject < ActiveRecord::Base 
    belongs_to :address, :autosave => true, dependent: :destroy 
    attr_accessor :address, :hour, :minute, :second, :location 

然後在我的應用程序/控制器/ my_objects_controller.rb我

def create 
    @my_object = MyObject.new(my_object_params) 
… 
    respond_to do |format| 
     if @my_object.save 
     format.html { redirect_to controller: "my_objects", action: "index", notice: 'Saved successfully.' } 
     format.js { render js: "window.location='/my_objects'" } 
     else 
     format.html { render action: "index" } 
     format.json { render json: @my_object.errors, status: :unprocessable_entity } 
     format.js { render json: { errors: @my_object.errors, success: false }, content_type: 'application/json' } 
     end 

    private 

    def my_object_params 
     params.require(:my_object).permit(:name, :day, :distance, :distance_unit_id, address: [:city, :state_id, :country_id], my_object_times_attributes: [:time_in_ms, :overall_rank, :age_group_rank, :gender_rank]) 
    end 

然而,當我救我提交的形式向「創建」方法,使用這些參數

{"utf8"=>"✓", "my_object"=>{"id"=>"", "name"=>"DaveRace2", "day"=>"07/06/2016", "distance"=>"3", "distance_unit_id"=>"4", "hour"=>"00", "minute"=>"12", "second"=>"05", "address"=>{"city"=>"austin"}, "my_object_times_attributes"=>{"0"=>{"overall_rank"=>"", "age_group_rank"=>"", "gender_rank"=>"", "time_in_ms"=>"725000"}}}, "state"=>"AR", "country"=>{"country_id"=>"233"}, "commit"=>"Save"} 

在我的「my_objects」表中沒有創建地址對象。所有其他字段都已填充,但address_id列爲空。我怎樣才能解決這個問題?

回答

0

以我初步觀察,

"address"=>{"city"=>"austin"} 

在上述散列,地址的類型是 '文本' 的。

你提到的可能是'整數'的外鍵「address_id」。

可能存在數據類型問題。

+0

感謝您描述問題,但我不清楚您列出的實際「答案」是什麼。我需要做些什麼來糾正這個問題? – Dave

+0

你有沒有在你的address.rb模型中設置has_many:my_objects? –

+0

我做了「has_one」,我的推理是一個地址只能與一個「my_object」關聯。 – Dave