2010-09-08 58 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

相關問題