2011-11-30 42 views
1

我們使用aws-sdk進行ruby,特別是AWS :: Record :: Base。aws-sdk-ruby AWS :: Record :: Base記錄共享相同的域

由於各種原因,我們需要將各種對象的記錄放在sdb中的同一個域中。

我們認爲我們在這裏使用的方法是向每個包含對象名的對象添加一個屬性,然後在從sdb獲取對象時將其包含在finder方法的where子句中。

我的問題的讀者:

  1. 你有什麼想法的這種做法?

  2. 這將如何最好地實施?如何在每個模型中明確定義對象時添加一個默認屬性?重寫find還是在finder方法中足以確保從sdb獲取對象包含考慮新默認屬性的子句?

想法感激。

回答

1
  1. 這真的取決於你的問題,但我覺得它有點令人討厭。變種記錄是好的,花花公子,但是當你從蘋果和恐龍開始,他們沒有共同的屬性時,這種方法沒有任何好處,我知道[除了保存250個SimpleDB域名(看似毫無意義的配額)]。如果你的記錄有共同的東西,那麼我可以看到這種方法可能有用,但有人在我的傳統系統中使用Btrieve中的變體記錄(通過C聯合實現)留下了像我一樣的傷痕,對此方法有着硬連接的反感。

  2. 我能想到的最簡潔的方法是讓你的模型通過繼承共享一個共同的父對象。然後,家長可以知道子類型,並適當地執行查詢。但是,這種設計絕對不是SOLID,並且違反了Law of Demeter

相關問題