2011-11-30 52 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