我有一个名为产品的模型属于两个模型,即用户和地址。
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
答案 0 :(得分:0)
你正面临着一个共同的问题伴侣。它被称为嵌套模型。您可以使用嵌套表单解决此问题。 RailsCasts中有一段非常好的视频在讨论这个问题。看看here。尝试一下,让我知道。