2011-04-29 63 views
5

林構建應用程序,用戶有某種心願單在Rails中的願望清單關係?

用戶只能有一個心願,不論那個項目屬於其他用戶的網站

我需要可以添加現有項目到心願 能夠通過current_user.wishlist.items訪問願望清單項目(即時使用設計,所以current_user可用)

我雖然在items表中添加了wishlist_id列,但是由於項目可以屬於多個願望清單。

這看起來很簡單,但有一個很難可視化的關係,或應該產生

回答

5
class User < ActiveRecord::Base 

    has_one :wishlist # or belongs_to :wishlist, it depends which you prefer 

end 

class Wishlist < ActiveRecord::Base 

    belongs_to :user 
    has_and_belongs_to_many :items 

end 

過程和遷移IM即時通訊:

./script/rails generate migration create_item_wishlists wishlist_id:integer item_id:integer 

創造加盟項目和心願間表。

UPDATE:要回答評論「弗蘭克暴風雪」的問題:

比方說,你有相同的結構,我的回答(只是改變項目產品或其他型號名稱),以HABTM關係你只是需要新的「項目」增加的「項目」集合,然後保存心願:

@user.wishlist.items << item 
@user.wishlist.save 

你可以把它法用戶:

class User 
    def add_to_wishlist(item) 
    wishlist.items << item 
    end 
end 

如果您想刪除或修改「items」的集合,只需使用Array中的任何Ruby方法,然後保存wishlist,它將檢查您的差異並僅保存更改。

+0

我在我的rails應用程序中生成了和上面一樣的願望清單關係,但是現在我不知道如何去添加product_id到用戶的願望清單中去......如果您有願望,請分享一下想法嗎?謝謝! – tmaximini 2012-04-09 20:34:20

+0

@frankblizzard看到我的答案,我剛剛更新瞭解決方案,爲您的問題。 – MBO 2012-04-11 07:13:12

+0

非常感謝很多人......非常感謝! – tmaximini 2012-04-11 11:35:56

相關問題