多态和has_one,belongs_to的区别

时间:2015-03-25 17:02:37

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2

我们有称为人的模型,具有以下列,名称,密码和行为。我们还有另外三个模型,即管理员,接收者,捐赠者,其领域根据人类行为而变化。现在我想知道我是应该使用多态关联还是has_one belongs_to association?

2 个答案:

答案 0 :(得分:0)

您的问题有点不清楚,但这是一般指南:

1)如果它属于多个其他模型,它应该是多态的。

2)如果它只属于另一个模型,那么它应该属于另一个模型。

3)如果您不确定您的关联的未来结构,多态是一个很好的选择,因为它几乎适合任何结构,并且它很容易撤消。

如果您需要任何澄清,请告诉我。

答案 1 :(得分:0)

在回答这个问题之前,我们首先要了解多态关联和has_one belongs_to关联,

多态关联:当我们需要建立一个模型与多个模型相关联的关联时,我们需要进行多态。引用rails guide的例子。

    class Picture < ActiveRecord::Base
      belongs_to :imageable, polymorphic: true
    end

    class Employee < ActiveRecord::Base
      has_many :pictures, as: :imageable
    end

    class Product < ActiveRecord::Base
      has_many :pictures, as: :imageable
    end

然而,当我们在模型之间只有一对一的关系时,没有关联从一个模型到第二个模型以及第一个和第三个模型之间的某种关系,那么我们可以选择belongs_to和has_many关联。希望这澄清一下。如果需要更多说明,请告诉我。

More Here