2010-09-08 52 views
1

筛选我有两个表:在模型中使用default_scope,通过正确的实例ID

书(ID,姓名,递减,INSTANCE_ID) 实例(ID,域)

用户只应能够看到分配给他们的记录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

这不是访问模型内​​的当前用户是一个好主意。与用户实例相关书籍的

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.books 

创建一本新书:由用户创建的图书

current_user.instance_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})) 
+0

拍摄,但现在当我创建一个新的书,它的分配INSTANCE_ID但不是user_id说明,我都需要?为什么会发生? – AnApprentice 2010-09-08 02:54:48

+0

更新了我的答案,看看。 – 2010-09-08 03:28:17

+0

@KandadaBoggu谢谢你的回复......但不是没有设置instance_id :)而user_id是空白的。看看开发日志,INSERT显示user_id值为NULL – AnApprentice 2010-09-08 03:41:36

相关问题