我有两张桌子:
书籍(id,name,desc,instance_id) 实例(id,domain)
用户应该只能在记录中看到分配给他们的instance_id的数据......
对于书籍,模型,为了实现这一点,我正在考虑使用默认范围..类似于:
class Books < ActiveRecord::Base
attr_accessible :name, :description
belongs_to :user
default_scope :order => 'books.created_at DESC'
AND books.instance_id == current.user.instance_id
end
对这个想法的任何想法?另外我如何为Rails 3编写第二行到最后一行? 'AND books.instance_id == current.user.instance_id'
由于
答案 0 :(得分:0)
访问模型中的当前用户并不是一个好主意。我将按如下方式实现:
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}))