2011-04-29 62 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

相关问题