I've got really typical problem, but with small twist - need to create
a Foo and Bar objects in a single form with validation of both
I've found really clean way to do it in this tutorial:
Code looks like this:
@foo = Foo.new params[:foo]
@bar = @foo.build_bar params[:bar] if @foo.is_a? FooBar
But the problem is that Foo model has "validates_presence_of :bar_id"
validation, so calling @foo.save causes error on @foo.bar_id. Another
problem is that I'm using STI and Foo is related with Bar only if it's
of specific type, which complicates things a bit.
Removing "validates_presence_of :bar_id" solves the problem -
@foo.bar_id is properly assigned and everything works great - but I'd
really like to have this validation there - otherwise I'd have to
change some code in other places (instead of checking for
"foo.bar_id", I'm doing "foo.is_a? FooBar" assuming that all FooBar
objects have proper foo_id assigned).