使用委托而不是在Rails中构建关联。重点是什么?

时间:2016-05-18 04:11:09

标签: ruby-on-rails

我正在查看一些代码,我看到delegatehas_many + through正在使用,而不是设置其他关联。我想知道使用delegate比设置另一个has_many关联有什么好处。

class AppleCore
  belongs_to :apple
  delegate :tree to :apple
end

然后

class Apple
  belongs_to :tree
end

最后

class Tree
  has_many :apples
end

在这个例子中......为什么我们只是将树委托给苹果而不是在AppleCore和Tree之间建立关联?

2 个答案:

答案 0 :(得分:0)

我认为是因为AppleCore和Tree之间没有直接联系。 This site might help clear things up.

答案 1 :(得分:0)

它允许您使代码更具可读性。您可以拨打apple_core.tree而不是apple_core.apple.tree。其中apple_core是AppleCore的一个实例。如果将前缀设置为true,则delegate :tree to :apple, prefix: true。您将使用apple_core.apple_true进行访问。

有关详情,请查看Rails Api Documentation