Rails嵌套属性 - 不创建父级

时间:2014-01-20 16:49:35

标签: ruby-on-rails nested-attributes

我有以下型号:

class Parent
  has_many :cars
  accepts_nested_attributes_for :cars
end

class Car
  belongs_to :parent
  validates :parent, presence: true
end

控制器代码:

def create
  parent = Parent.new
  parent.attributes = parent_params
  parent.save
end

def parent_params
  params.require(:parent).permit(:name,  cars_attributes: [:name])
end

当我尝试使用Parent创建Cars时,Cars上的验证失败,因为尚未创建Parent。如何通过嵌套属性创建验证?

1 个答案:

答案 0 :(得分:3)

根据快速搜索,您可以使用:inverse_of来克服这种情况。

在您的代码中:

class Parent
  has_many :cars, inverse_of: :parent
  accepts_nested_attributes_for :cars
end

class Car
  belongs_to :parent
  validates :parent, presence: true
end

(未经测试)

查看dem来源:

  1. Validating presence of the parent object(滚动到该部分)。
  2. Issue on github
  3. Some post I didn't bother to read but is referenced on the issue above
  4. GL& HF。