Синтаксис именованной области - PullRequest
0 голосов
/ 27 марта 2011

У меня есть следующий объект модели: Issue.owner = [array]

Я пытаюсь создать область, где область ищет в массиве конкретное целое число, например:

scope :tagged_in_issue, where("issues.owner.include?(1)", true) 

Где я ошибся?

Ответы [ 2 ]

1 голос
/ 27 марта 2011

Вы можете добавить метод следующим образом:

class Issue < AR::Base
  def tagged_in_issue?(n)
    owner.include?(n)
  end
end

@issue.tagged_in_issue(1)
#=> true
@issue.tagged_in_issue(2)
#=> false

UPD

Насколько вам нужно scope мой подход не тот, который вам нужен. Таким образом, вы можете сделать это так (Ruby way)

class Issue < AR::Base
  def self.tagged_in_issue(n)
    all.select{|a| a.owner.include?(n)}
  end
end

Issue.tagged_in_issue(1)
#=> Array of issues

Если вы хотите сделать это через SQL, вы должны описать, что такое атрибут owner и где он хранит

1 голос
/ 27 марта 2011

Вы не можете использовать Ruby там, где он ожидает SQL.Параметр в предложении where должен быть чем-то, что он может использовать в SQL, например литеральная строка, массив с заполнителями или хеш с парами столбец-значение.-фразировать ваш запрос как предложение SQL WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...