Reu, thanks a lot!! this is exactly what I want. Facing one problem when I am using accepts_nested_attributes_for and has_many. This is working in rails way and able to insert record into songs, people and people_song table correctly. But again I want to use similar logic find and initilize. But in that case I may need to insert into people_song table manually. Any thoughts on this?
Thanks! Butu On Thu, Feb 24, 2011 at 8:34 AM, reu <rnavar...@gmail.com> wrote: > You don't need to use nested attributes for that. You can achieve the > same result with a pretty simple virtual attribute: > > class Song < ActiveRecord::Base > belongs_to :movie > > def movie_name=(name) > @movie_name = name > self.movie = Movie.find_or_initialize_by_name(name) > end > > def movie_name > @movie_name > end > end > > And then on your form: > > = form_for @song do |form| > = form.text_field :movie_name > > On Feb 23, 3:13 pm, Butu <but...@gmail.com> wrote: > > Hello Jim, > > > > Thanks for your reply. > > > > I can able to do accepts_nested_attributes with belongs_to > > > > @song.build_movie > > > > use this either in action or before the form and use fields_for. This > will > > create the new movie record and insert movie_id in song model as well. > > > > On Wed, Feb 23, 2011 at 2:12 PM, Jim Ruther Nill <jvn...@gmail.com> > wrote: > > > > > > > > > > > > > > > > > > > > > On Wed, Feb 23, 2011 at 2:54 PM, Butu <but...@gmail.com> wrote: > > > > >> Thanks Bryan for your reply. > > > > >> For first part of my problem, I am able to figure out the nested > > >> attributes with belongs_to. > > > > >> For second part, I am looking for Rails way solution to my problem. > > > > >> Using nested attribute. I can able to create Movie if it does not > exist. > > >> And able to associate it with song model (movie_id populated > correctly) > > >> work really good by rails way. I want this behavior. > > > > >> *But when movie already exist. I want to associate that movie id with > the > > >> new song to be created using accepts_nested_attributes_for.* > > >> * > > >> * > > > > > you can't. accepts_nested_attributes_for doesn't work on belongs_to > > > attribute. > > > > >> ** > > >> Thanks! > > >> Butu > > > > >> On Tue, Feb 22, 2011 at 10:09 PM, Bryan Crossland < > bacrossl...@gmail.com>wrote: > > > > >>> Butu, > > > > >>> You should look at before_create in ActiveRecord. I think it would be > > >>> better if you put on in your Song Model that calls private function > to > > >>> check whether the passed in Movie name exists or not. If it doesn't, > > >>> create it and if it does exist do nothing. > > > > >>> Thanks, > > > > >>> B. > > > > >>> On Mon, Feb 21, 2011 at 9:42 PM, Butu <but...@gmail.com> wrote: > > >>> > Here is my model looks like:- > > >>> > Model: Movie > > >>> > has_many :songs > > >>> > Model: Song > > >>> > belongs_to :movie > > >>> > I have a songs/new form which contains song name and movie name > input > > >>> field. > > >>> > If movie name does not exist it should create a new one else it > should > > >>> use > > >>> > already existing one. So this I will come to know only after user > enter > > >>> in > > >>> > movie name field. > > >>> > Can I achieve this using nested attributes of rails 3? > > >>> > Note: I can able to implement the same in has_many association but > not > > >>> in > > >>> > this case. > > >>> > Thanks! > > >>> > Butu > > > > >>> > -- > > >>> > You received this message because you are subscribed to the Google > > >>> Groups > > >>> > "Ruby on Rails: Talk" group. > > >>> > To post to this group, send email to > rubyonrails-talk@googlegroups.com > > >>> . > > >>> > To unsubscribe from this group, send email to > > >>> > rubyonrails-talk+unsubscr...@googlegroups.com. > > >>> > For more options, visit this group at > > >>> >http://groups.google.com/group/rubyonrails-talk?hl=en. > > > > >> -- > > >> You received this message because you are subscribed to the Google > Groups > > >> "Ruby on Rails: Talk" group. > > >> To post to this group, send email to > rubyonrails-talk@googlegroups.com. > > >> To unsubscribe from this group, send email to > > >> rubyonrails-talk+unsubscr...@googlegroups.com. > > >> For more options, visit this group at > > >>http://groups.google.com/group/rubyonrails-talk?hl=en. > > > > > -- > > > ------------------------------------------------------------- > > > visit my blog athttp://jimlabs.heroku.com > > > > > -- > > > You received this message because you are subscribed to the Google > Groups > > > "Ruby on Rails: Talk" group. > > > To post to this group, send email to rubyonrails-talk@googlegroups.com > . > > > To unsubscribe from this group, send email to > > > rubyonrails-talk+unsubscr...@googlegroups.com. > > > For more options, visit this group at > > >http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.