将数据保存到第一个模型并使用生成的密钥将数据保存到Rails中的其他模型

时间:2016-04-02 14:32:04

标签: ruby-on-rails activerecord

我有一个名为产品的模型属于两个模型,即用户地址

 class Product < ActiveRecord::Base
    belongs_to :user
    belongs_to :address
    validates :title, :description, :user_id, :address_id, presence: true
    validates :product_type, numericality:{:greater_than => 0, :less_than_or_equal_to => 2}, presence: true
    accepts_nested_attributes_for :address
end

现在问题是用户在填写产品信息时会输入地址,因此我没有 address_id 来提供产品模型。我怎样才能做到这一点?一种选择是先将数据保存在地址模型中,然后使用生成的ID输入产品模型。有没有更好的方法呢? 假设我首先保存地址模型,然后保存产品模型,假设地址模型已保存且用户< / strong>模型以某种方式触发了一些异常。如何回滚保存的地址?

这是我的控制器代码:

    class Api::V1::ProductsController < ApplicationController

    respond_to :json

    def create
        product = Product.new(params[:product])
        if product.save
            render json: {success: "success"}, status: 200
        end
    end
end

1 个答案:

答案 0 :(得分:0)

你正面临着一个共同的问题伴侣。它被称为嵌套模型。您可以使用嵌套表单解决此问题。 RailsCasts中有一段非常好的视频在讨论这个问题。看看here。尝试一下,让我知道。