Не очень хорошая идея получить доступ к текущему пользователю внутри модели. Я бы реализовал это следующим образом:
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 Book < ActiveRecord::Base
belongs_to :user
belongs_to :instance
end
Список книг, связанных с экземпляром пользователя:
current_user.instance_books
Список созданных пользователем книг:
current_user.books
Создание новой книги:
current_user.books.create(:instance => current_user.instance, ..)
Примечание:
Ваш синтаксис создания книги неверен. Метод build
принимает хеш в качестве параметра. Вы передаете два аргумента вместо одного.
user.books.build(params[:book].merge(:instance => current_user.instance}))
OR
user.books.build(params[:book].merge(:instance_id => current_user.instance_id}))