Обход моделей с помощью meta_search и обращение к виртуальным атрибутам - PullRequest
0 голосов
/ 07 июля 2011

Я пытаюсь применить meta_search к форме, где среди всех атрибутов есть поиск по имени автора. Он хранится как два атрибута "first_name" и "last_name" в авторах таблицы. Я создал следующий виртуальный атрибут в модели Author:

  search_methods :name

  def name 
    self.first_name + " " + self.last_name
  end

Модель «Авторы» и «Книги», которую я ищу, связаны следующим образом:

class Book < ActiveRecord::Base
  has_many :authors
..

class Author < ActiveRecord::Base
  belongs_to :book
..

Теперь, когда я пытаюсь вставить следующий вид в представление, я получаю сообщение об ошибке:

<%= f.text_field :authors_name_contains, :placeholder => "author.." %>

Но это работает, если я применяю условия к атрибутам "first_name" и "last_name" через оператор "или" здесь в представлении.

Что я делаю не так? Как заставить meta_search использовать метод "name"?

1 Ответ

0 голосов
/ 07 июля 2011

Я не думаю, что вы можете сделать это.Если я правильно понимаю meta_search, он просматривает атрибуты, сгенерированные ActiveRecord (или каким бы то ни было вашим бэкэндом), чтобы он ничего не знал о ваших виртуальных атрибутах.

...