create takes a hash and params[:book] is a hash then you are adding a second hash with :intance => current_user.intance that is why is says you are passing 2 arguments
a good idea try doing this @book = current_user.book.new(params[:book]) @book = current_user.instance if @book.save blah blah blah .... On Wed, Sep 8, 2010 at 10:39 AM, Adam <[email protected]> wrote: > On Wed, Sep 8, 2010 at 12:55 AM, nobosh <[email protected]> wrote: > >> I'm trying to work out your suggestion on how to not have a >> instance_id in books. can you take a look at let me know what's wrong >> and if this is what you suggest? thxs! >> >> class Instance < ActiveRecord::Base >> has_many :users >> has_many :books >> end >> >> class User < ActiveRecord::Base >> belongs_to :instance >> has_many :books, :order => "created_at DESC" >> has_many :instance_books, :through => :instance, :source => >> :books, >> :order => "created_at >> DESC" >> . >> . >> end >> >> class Note < ActiveRecord::Base >> belongs_to :user >> belongs_to :instance >> end >> >> >> .... Then to actually get all the notes for instance_id = 1 >> >> class NotesController < ApplicationController >> def index >> @books = current_user.instance_books >> . >> end >> . >> . >> end >> >> >> current_user.instance_books doesn't return the right results. Ideas? >> thxs > > > I don't think has_many :through will work that way - it needs a real join > table as far as I know. One with two belongs_to relationships. If you're > wanting to keep instance_id on books, your original code can work, but Book > belongs_to Instance, not has_one Instance :through User. If you want to > ensure the instance is the same as the user's, you can add a validation. > > validate :instance_is_same_as_user_instance > > def instance_is_same_as_user_instance > > unless self.user and self.instance == self.user.instance > > errors.add(:instance, "must be the same as the instance on this > Book's User") > > end > > end > > -- > 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 [email protected]. > To unsubscribe from this group, send email to > [email protected]<rubyonrails-talk%[email protected]> > . > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

