Neo4j 在控制器中使用 params[:search] 并在模型中使用

Neo4j using params[:search] in controller and like in the model

索引方法中控制器中的行是:

@authors = Author.as(:a).search(params[:search]).paginate(:page => @page, :per_page => @per_page, return: :a, order: :name)

希望检索所有具有名称子字符串部分的作者。

作者模型中的搜索方式为:

  private
    def self.search(search)
      where("name =~ '.*:search.*'", search: "%#{search}%")
    end

我正在尝试使用与 ActiveModel 相同的模式,但出现错误:

name not defined (line 1, column 39) "MATCH (result_author:Author) WHERE (name =~ '.:search. ') AND (result_author.search = {result_author_search}) WITH result_author as result_author RETURN COUNT(result_author)

不知道怎么写才好。

这种形式的 where 不起作用(尽管我们一直在谈论实现它)。你应该这样做:

def self.search(node_var, search)
  all.where("#{node_var}.name =~ {search}").params(search: ".*#{search}.*")
end


@authors = Author.as(:a).search(:a, params[:search]).paginate(:page => @page, :per_page => @per_page, return: :a, order: :name)

all 在 class 方法中也很重要,它允许您制作这样的链