0

我创建了一个成员脚手架并用成员填充了数据库。后来我决定添加一个篮子脚手架(也许有更简单的方法,但这只是一个例子),以便会员可以将东西添加到他们的购物篮中进行购物。

模型非常明显:

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 教程,但我遇到的所有事情都涉及冗长的手动过程,这些过程不适用于我正在做的任何事情。

4

1 回答 1

0

对于新成员,您可以使用回调,例如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)}
于 2013-02-20T12:15:44.837 回答