我们遇到多态性问题& Ruby中的STI
我们的数据库有两个表:' account'和'列出'。 '列表'有列' account_id','类型','说明'。
我们的课程如下:
class Account < ActiveRecord::Base
has_many :lists
has_many :subscription_lists
has_many :email_lists
end
class List < ActiveRecord::Base
belongs_to :account
end
class SubscriptionList < List
end
class EmailList < List
end
内部帐户,方法email_lists
和subscription_lists
完全按预期工作。我们的目标是希望能够调用lists
,它将返回所有列表的数组。目前,这不起作用,self.lists
奇怪的是,Account.find(self.id).lists
为我们提供了所有相关列表的数组。
是什么给出的?我们如何解决这个问题?
答案 0 :(得分:0)
您可以使用List.all
返回所有List
个对象的ActiveRecord :: Relation,无论其类型如何。
此外,您可以在@instance_variable.lists
Account
更重要的是,你可以在类方法上使用查询来完成这项工作,就像这样,它也将返回一个ActiveRecord :: Relation:
List.where('account_id = ?', id)
最后,您与Account
的{{1}}关联不应包含List
的子女:
List