1
[OK]を、私はレールに次のモデルがあります:アクセスID
- シャードに属している、またはいずれかの「シャード」
- 「現実」は何に属しています
- 現実にスペース
に属し
これを実行する方法はありますか?
[OK]を、私はレールに次のモデルがあります:アクセスID
に属し
これを実行する方法はありますか?
class Property < ActiveRecord::Base
belongs_to :space
def custom_method
space.reality.shard.id if space.reality.shard
end
end
Property
オブジェクトのインスタンスメソッド内では、これは動作するはずです:
shard_id = space.reality.shard_id
# returns either the shard id, or nil if the reality doesn't belong to a shard
誰かがあなたがここにいくつかの深刻なカプセル化を壊していることを指摘しなければなりません。 demeterの法則(http://en.wikipedia.org/wiki/Law_of_Demeter)は、普遍的には1ドットだけであると解釈されていますが(過度に簡素化されていますが)、あなたがしようとしていることは間違いなくそれに違反しています。プロパティは、それ自体とそのメンバーについてのみ知っている必要があります。スペースは「メンバー」であり、シャードはそうではありません。私はあなたがそれをどのように構造化しているかを見て、より良い方法を見つけ出すことができるかどうかを見ます。 – karmajunkie