【问题标题】:Despite including " :autosave => true" in my model, Rails is not saving my assocation尽管在我的模型中包含“:autosave => true”,Rails 并没有保存我的关联
【发布时间】:2016-11-11 12:30:28
【问题描述】:

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

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

然后在我的 app/controller/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

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

{"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 列为空白。我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

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

    哦,attr_accessor 应该是 attr_accessible 吗?

    【讨论】:

      【解决方案2】:

      在我最初的观察中,

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

      在上面的哈希中,地址是“文本”类型。

      你提到外键“address_id”可能是“整数”。

      可能存在数据类型问题。

      【讨论】:

      • 感谢您描述问题,但我不清楚您列出的实际“答案”是什么。我需要做什么来纠正这个问题?
      • 你在 address.rb 模型中设置了 has_many :my_objects 吗?
      • 我做了“has_one”,我的推理是地址只能与单个“my_object”相关联。
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2011-01-06
      相关资源
      最近更新 更多