0

我在尝试使用<<运算符附加关系时遇到问题。如果我在追加后保存,我的回调似乎没有运行。

我有两个模型:

织物

class Fabric
  include DataMapper::Resource

  property :id,           Serial
  property :name,         String
  property :fixed_color,  Boolean
  property :active,       Boolean, :default => true

  has 1,      :cut
  has n,      :colors, :through => Resource

  after :save, :add_to_fishbowl

  def add_to_fishbowl
    puts self.colors.size
  end
end

颜色

class Color
  include DataMapper::Resource

  property :id,   Serial
  property :name, String

  has n,      :cut
  has n,      :fabrics, :through => Resource
end

我创建了两种颜色和一种面料:

yellow = Color.new(:name => "yellow")
red = Color.new(:name => "red")

f = Fabric.create(:name => "tricot", :fixed_color => false)

如果我使用附加运算符,我的回调不会运行:

f.colors << red
f.save
f.colors << yellow
f.save
puts f.colors.size
=> 0
=> 2

如果我添加数组,它是:

f.colors = f.colors + [red]
f.save
f.colors = f.colors + [yellow]
f.save
puts f.colors.size
=> 0
=> 1
=> 2
=> 2

我正在运行 ruby​​ 1.9.3p392 和 data_mapper (1.2.0)。

4

1 回答 1

0

你缺少关系,有 n,:cuts

class Color
  include DataMapper::Resource

  property :id,   Serial
  property :name, String

  has n,      :cuts
  has n,      :fabrics, :through => Resource
end
于 2013-04-25T20:37:23.713 回答