Запрос к базе данных postgres с помощью рельсов

Я пытаюсь найти в моей базе данных по параметрам из формы поиска. У меня все отлично работало в SQLlite, но когда я перешел на postgres, кое-что сломалось. в app / views/index.html.erb я определил форму:

<tr>
<%= form_tag(guidelines_path, :method => "get", id: "search-form") do %>
  <td><%= label_tag(:invprogsearch, "Search by Investor and Program")%></td>
  <td><%= text_field_tag :investor, nil, placeholder: "Enter investor" %></td>
  <td><%= text_field_tag :program_code, nil, placeholder: "Enter program" %></td>
  <td><%= submit_tag "Search", :name => nil %></td>
<% end %>
</tr>

и в моем контроллере (app/controllers/ Guide_controller.rb) я определил действие индекса как таковое

def index
    if params[:investor].present? && params[:program_code].present?
      @guidelines = Guideline.where(investor: params[:investor], program: params[:program_code])
    else
      @guidelines = Guideline.all
    end
end

Есть идеи, почему это не сработает? У меня нет идей. Спасибо!

приложение / модели /guideline.rb:

class Guideline < ActiveRecord::Base

  validates :guide_desc, presence: true

  belongs_to :parent, class_name: 'Guideline'
  has_many   :children, class_name: 'Guideline', foreign_key: 'parent_id'

  scope :top_level, where(:parent_id => nil)

  def descendants
    self_and_descendants - [self]
  end

  def self_and_descendants
    self.class.tree_for(self)
  end

  def self.tree_for(instance)
    where("#{table_name}.id IN (#{tree_sql_for(instance)})").order("#{table_name}.id")
  end

  def self.tree_sql_for(instance)
    tree_sql =  <<-SQL
      WITH RECURSIVE search_tree(id, path) AS (
          SELECT id, ARRAY[id]
          FROM #{table_name}
          WHERE id = #{instance.id}
        UNION ALL
          SELECT #{table_name}.id, path || #{table_name}.id
          FROM search_tree
          JOIN #{table_name} ON #{table_name}.parent_id = search_tree.id
          WHERE NOT #{table_name}.id = ANY(path)
      )
      SELECT id FROM search_tree ORDER BY path
    SQL
  end
end

0 ответов

Другие вопросы по тегам