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 Bates' 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.
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 Bates’ 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
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
accepts_nested_attributes_for :B
end
Note: You’ll need to create the appropriate form as Ryan Bates 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 Taylor wrote: Ichiro, it might have been better to provide the sample code as follows:
class A < AR has_many :B, :through => :C has_many
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
accepts_nested_attributes_for :B end
Note: You'll need to create the appropriate form as Ryan Bates 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
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.