aws sdk ruby aws::Record::共享同一域的基本记录

aws sdk ruby aws::Record::共享同一域的基本记录,ruby,amazon-web-services,amazon-simpledb,Ruby,Amazon Web Services,Amazon Simpledb,我们正在使用aws sdk for ruby,特别是aws::Record::Base 出于各种原因,我们需要将同一域中不同对象的记录放在sdb中 我们在这里使用的方法是为每个包含对象名的对象添加一个属性,然后在从sdb获取对象时将其包含在finder方法的where子句中 我向读者提出的问题是: 你对这种方法有什么想法 如何最好地整洁地实施这一点?如何最好地添加对象中包含的默认属性,而不在每个模型中明确定义它?覆盖find或finder方法中的where是否足以确保从sdb获取对象时包含考虑新

我们正在使用aws sdk for ruby,特别是aws::Record::Base

出于各种原因,我们需要将同一域中不同对象的记录放在sdb中

我们在这里使用的方法是为每个包含对象名的对象添加一个属性,然后在从sdb获取对象时将其包含在finder方法的where子句中

我向读者提出的问题是:

  • 你对这种方法有什么想法

  • 如何最好地整洁地实施这一点?如何最好地添加对象中包含的默认属性,而不在每个模型中明确定义它?覆盖find或finder方法中的where是否足以确保从sdb获取对象时包含考虑新默认属性的子句

  • 我很感激你的想法

  • 这真的取决于你的问题,但我觉得有点恶心。变体记录很不错,但当你从苹果和恐龙开始,它们没有共同的属性时,这种方法就没有我所知的好处[除了保留250个SimpleDB域的配额(看起来毫无意义)]。如果您的记录有一些共同点,那么我可以看出这种方法可能有用,但是像我这样被传统系统在Btrieve中使用不同记录(通过C联合实现)而伤痕累累的人对这种方法有一种天生的反感

  • 我能想到的最干净的方法是让您的模型通过继承共享一个公共父级。然后,父级可以知道子类型,并适当地实现查询。然而,这种设计绝对不是,并且违反了标准

  • 这真的取决于你的问题,但我觉得有点恶心。变体记录很不错,但当你从苹果和恐龙开始,它们没有共同的属性时,这种方法就没有我所知的好处[除了保留250个SimpleDB域的配额(看起来毫无意义)]。如果您的记录有一些共同点,那么我可以看出这种方法可能有用,但是像我这样被传统系统在Btrieve中使用不同记录(通过C联合实现)而伤痕累累的人对这种方法有一种天生的反感

  • 我能想到的最干净的方法是让您的模型通过继承共享一个公共父级。然后,父级可以知道子类型,并适当地实现查询。然而,这种设计绝对不是,并且违反了标准