2017-07-16 60 views
0

我们有两个模型表,它们共享相同的查询,但由于我们分别查询它们,因此分页可能会令人头疼。两个独立的模型,需要统一

我们有视频模型和图像模型。 所以如果我们想根据创建日期来获取它们,我们需要分别运行2个查询,然后统一它们,重新排序并再次限制。 头疼的是分页时,我们需要两个分别的偏移量。

你明白了。 我们想以某种方式将它们统一起来。问题在于它们如此扎根于我们复杂的应用程序中,我们无法将它们统一为一张大桌子。 我们想知道ActiveRecord有什么样的解决方案(如果有的话)管理单个表,指向2个独立的模型,其中查询可以一起运行。也许我们应该创建一个大型的资产表,它有自己的ID和reference_id给特定的模型?

谢谢!

回答

1

ActiveRecord :: NestedAttributes可能适合你。

class Video has_one: image accepts_nested_attributes_for :image end

params = { video: { name: 'video', image_attributes: { icon: 'image' } } } video = Video.create(params[:video]) video.avatar.icon # => 'image'

欲了解更多信息:检查this link

+0

尽管此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/16727957) – Grandpa

+1

做到了。感谢您的信息 –

0

我不知道你使用的是什么数据库,但是我遇到了类似的问题,并且SQL视图似乎是解决方案。只需创建视图,即可将这两个表格合并到迁移文件和代表图像和视频的新模型中。在您的模型中,您需要指定表名称和主键:

self.primary_key = :id 
self.table_name = 'name_of_your_view' 

ActiveRecord会将此视图视为常规表。性能可能不如实际表格时的性能,但比将所有内容加载到内存,排序和分页更好。

+0

我想过这个,但我不喜欢,因为模型之间的列不断变化,需要我改变视图 – Himberjack

相关问题