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)}
感谢,这是非常有益的补充篮子。 – hugh 2013-02-20 12:19:26
不客气!如果您认为这可以解答您的问题,请将答案标记为已接受:) – Jesper 2013-02-20 12:37:33