我有3个模型通过RoR上的ActiveRecord关联相互关联。
我试图在ParentsController #create action中创建子实例
但是我得到一个错误,即如果没有父级,子实例就无法保存。
模型
Class Parent < ActiveRecord::Base
has_many :children, :through => :middles #, :class_name => 'Parent'
has_many :p_has_childs, :foreign_key => 'p_id'
accepts_nested_attributes_for :p_has_childs
end
Class PHasChild < ActiveRecord::Base
belongs_to :parent, :foreign_key => 'p_id'
validates_presence_of :parent, :child
end
Class Child < ActiveRecord::Base
has_many :p_has_childs
has_many :parents, :through => :middles, :class_name => 'Parent'
end
查看
@parent.form_for do |f|
@parent.p_has_childs.each do |p_has_child|
f.fields_for :p_has_childs, p_has_child do |p_f|
p_f.select :child_id
end
end
f.submit
end
我尝试了accepts_nested_attributes_for方法,如果Class PHasChild有parent_id和child_id(并使用ParentHasChild类),那么效果很好但是我需要使用p_id而不是parent_of。 如何使用belongs_to关联的foreign_key选项?