Has_many models in a form

Hi, guys.
There are four models in the program, A has_many B through C, B has_many
A through C, A has_many D, D belongs_to A. I have a form to create A.
Inspired by Ryan B.’ railscasts I was able to create A and D in the
same form, and link A to B(created beforehand) through C in the same
form as well. Is it possible to create A and B in the same form?
Thanks in advance.

On Mon, Mar 1, 2010 at 12:29 PM, Ichiro S. [email protected]
wrote:

Hi, guys.
There are four models in the program, A has_many B through C, B has_many
A through C, A has_many D, D belongs_to A. I have a form to create A.
Inspired by Ryan B.’ railscasts I was able to create A and D in the
same form, and link A to B(created beforehand) through C in the same
form as well. Is it possible to create A and B in the same form?
Thanks in advance.

Ichiro, it might have been better to provide the sample code as follows:

class A < AR
has_many :B, :through => :C
has_many :smiley:
end

class B < AR
has_many :A, :through => :C
end

class D < AR
belongs_to :A
end

Next, you should be able to create A and B in the same form using
accepts_nested_attributes_for. For example,

class A < AR
has_many :B, :through => :C
has_many :smiley:
accepts_nested_attributes_for :B
end

Note: You’ll need to create the appropriate form as Ryan B. walks
you through in his nested model form screencasts.

Good luck,

-Conrad

Thank you for your help, Conrad. I’ll try it out later.
You are right, I should’ve provided the sample code. It’s cleaner and
more clear.

Conrad T. wrote:
Ichiro, it might have been better to provide the sample code as follows:

class A < AR
has_many :B, :through => :C
has_many :smiley:
end

class B < AR
has_many :A, :through => :C
end

class D < AR
belongs_to :A
end

Next, you should be able to create A and B in the same form using
accepts_nested_attributes_for. For example,

class A < AR
has_many :B, :through => :C
has_many :smiley:
accepts_nested_attributes_for :B
end

Note: You’ll need to create the appropriate form as Ryan B. walks
you through in his nested model form screencasts.

Good luck,

-Conrad

I don’t know if I need to write a new post, but the issue is related to
the topic. I did what Conrad suggested and it worked perfectly. But
there’s a problem on deleting B on the edit page of A. Here’s the A.rb:

class A < AR
has_many :B, :through => :C
has_many :smiley:
accepts_nested_attributes_for :B, :allow_destroy=>true
end

When I deleted B on the edit page, B was gone, but it’s also deleted
from table B. What I want is disassociate B from A and keep B in its
table when I do the delete. Is there a way to do it?

Another problem is when I add B to A, if B already exists in table B,
can I link to B instead of creating a duplicate one in table B?
Thanks.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs