11

Rails には、モデルでデメテルの法則違反を回避するための 2 つの優れた方法があります。

最初はこれです:

class Restaurant < ActiveRecord::Base
    belongs_to :franchise
    delegate :owner, to: :franchise
end

2番目はこれです:

class Restaurant < ActiveRecord::Base
    belongs_to :franchise
    has_one :owner, through: :franchise
end

違いはなんですか?一部またはすべてのインスタンスで、あるオプションを他のオプションよりも推奨するものはありますか?

私が検出できる唯一の違いは、delegateオプションが後者のレコードを取得するために 2 つの SQL クエリを生成するようにbelongs_to :through見えるのに対し、1 つのクエリでそれを行うように見えることです。

4

1 に答える 1