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 を付けたくありません。メンバーごとに作成されたバスケットが必要です (動的に - 新しいメンバーは自動的にバスケットを取得します)。これにより、メンバーが Web サイトにアクセスしたときにアイテムをバスケットに追加できるようになります。

私はいくつかの 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 に答える