Я начал с того, что следовал этому руководству здесь Rails - многократное сопоставление индексных ключей
Я попытался добавить: включить, чтобы ускорить сопоставление, но я получаю эту ошибку:
ActiveRecord::StatementInvalid in ItemsController#show
SQLite3::SQLException: no such column: links.item_id: SELECT "links".* FROM "links" WHERE ("links".item_id = 19)
вот что у меня есть:
item.rb
class Item < ActiveRecord::Base
has_many :links, :dependent => :destroy, :uniq => true
belongs_to :category
belongs_to :user
is_sluggable :name
def links
Link.by_item(self)
end
link.rb
class Link < ActiveRecord::Base
belongs_to :item1, :class_name => 'Item', :foreign_key => :item1_id
belongs_to :item2, :class_name => 'Item', :foreign_key => :item2_id
belongs_to :user
validates_presence_of :item1_id
validates_presence_of :item2_id
validates_uniqueness_of :item1_id, :scope => :item2_id, :message => "This combination already exists!"
def self.by_item(item)
where("item1_id = :item_id OR item2_id = :item_id", :item_id => item.id)
end
end
items_controller.rb
def show
@item = Item.find_using_slug(params[:id], :include => [:category, :user, :links])
Работает нормально без: ссылки внутри: включают.Но в противном случае я получаю ошибку.
Насколько я понимаю, item_id хранится в таблице ссылок как item1_id или item2_id, поэтому его нельзя найти.Есть ли обходной путь для этого, потому что я буду активно ссылаться на записи ссылок.Я не очень хорошо разбираюсь в SQL.
Также не уверен, каков наилучший способ настроить индекс
Готов попробовать любой совет.Спасибо