2013-02-20 111 views
0

我創建了一個會員腳手架並將其與成員一起填入數據庫。後來,我決定添加一個籃子腳手架(也許有一個更簡單的方法,但這只是一個例子),以便會員可以添加東西到購物籃。Ruby on Rails會員籃關係

的模型是很明顯的:

class Basket < ActiveRecord::Base 
    attr_accessible :member_id 
    belogs_to :member 
end 

class Member < ActiveRecord::Base 
    attr_accessible :name 
    has_one :basket 
end 

但現在我不想手動創建一個億個籃,並給每個人一個會員ID。我需要爲每個成員創建一個籃子(動態 - 新成員自動獲取籃子),這樣當他們訪問網站時,他們可以將物品添加到籃子中。

我遵循了一些Rails教程,但是我遇到的一切都涉及到冗長的手動過程,它們不適用於我正在做的任何事情。

回答

0

對於新成員,您可以使用callback(如after_create)來創建購物籃。

例如:

class Member < ActiveRecord::Base 
    attr_accessible :name 
    has_one :basket 
    after_create :create_basket 

    private 
    def create_basket 
    Basket.create(member: self) 
    end 
end 

對於現有的會員,您可以用rails console

~/Rails/myapp [master] $ rails console 
Loading development environment (Rails 3.2.11) 
1.9.3p286 :001 > Member.where(basket: nil).each {|m| Basket.create(member: m)} 
+0

感謝,這是非常有益的補充籃子。 – hugh 2013-02-20 12:19:26

+0

不客氣!如果您認爲這可以解答您的問題,請將答案標記爲已接受:) – Jesper 2013-02-20 12:37:33