在Rails 6中以多对多关系进行下一个查询的最佳方法是什么?>>
这是我的结构:
class Contact < ApplicationRecord has_and_belongs_to_many :lists end class List < ApplicationRecord has_and_belongs_to_many :contacts end
这是迁移文件:
class AddContactsListsRelation < ActiveRecord::Migration[6.0] def change create_table :contacts_lists do |t| t.belongs_to :contact t.belongs_to :list end end end
这是我的查询:
class ContactsLists < ApplicationRecord def self.find_with_page(listId, paginationQuery) contacts = List.find(listId).contacts result = contacts.order(created_at: paginationQuery[:order]).limit(paginationQuery[:page_size]) .offset(paginationQuery[:page_number] * paginationQuery[:page_size]) result end end
我不是Rails查询API的专家,但我认为这是进行两个不同查询的次佳方法,对吗?
在Rails 6中以多对多关系进行下一个查询的最佳方法是什么。这是我的结构:类Contact
Contact
.joins(:lists)
.where(list_id: listId)
.order(created_at: paginationQuery[:order]
.limit(paginationQuery[:page_size])
.offset(paginationQuery[:page_number] * paginationQuery[:page_size])
这应该起作用:
def self.find_with_page(list_id, pagination_query) Contact.joins(:lists) .where(lists: { id: list_id }) .order(created_at: pagination_query[:order]) .limit(pagination_query[:page_size]) .offset(pagination_query[:page_number] * pagination_query[:page_size]) end