Ruby on Rails会员篮关系

问题描述:

我创建了一个会员脚手架并将其与成员一起填入数据库。后来,我决定添加一个篮子脚手架(也许有一个更简单的方法,但这只是一个例子),以便会员可以添加东西到购物篮。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教程,但是我遇到的一切都涉及到冗长的手动过程,它们不适用于我正在做的任何事情。

对于新成员,您可以使用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