尽管在我的模型中包含“:autosave => true”,但Rails并没有保存我的关联

时间:2016-07-08 20:42:47

标签: ruby-on-rails-4 associations belongs-to autosave

我正在使用Rails 4.2.3在我的数据库中,我有一个“my_objects”表,其中“address_id”是返回“地址”表的外键。我在app / models / my_object.rb文件中有这个...

.list

然后在我的app / controller / my_objects_controller.rb中我有

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

但是,当我保存将表单提交到“创建”方法时,使用这些参数

  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

我的“my_objects”表中没有创建地址对象。填充所有其他字段,但address_id列为空。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

在我最初的观察中,

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

在上面的哈希中,地址的类型为“text”。

你提到了外键“address_id”,它可能是'整数'。

可能存在数据类型问题。

答案 1 :(得分:0)

不会重复#address的定义吗?您已将其设置为关联(与belongs_to)和实例变量(与attr_accessor)。

哦,attr_accessor应该是attr_accessible吗?