Как добавить пару в класс пользователей Ruby on Rails и отсортировать по ней? - PullRequest
0 голосов
/ 06 января 2012

Контроллер: @users = User.all

Просмотр:

<%= @users %>

Результат [#<User id: 1, email: "a@a.a", location: "London">, #<User id: 2, email: "b@b.b", location: "Paris">]


Как добавить в класс пользователя еще одну пару, не добавляя ее в модель?что-то вроде:
Контроллер:
@users.each do |user| <br>
  @type = Types.find(:last, :conditions => ["user_id_addressedto = #{user.id}"])
  user << @type
end
@users.sort_by(:type)

в конце я хочу видеть результат как:
Вид:

<%= @users %>

Результат: [#<User id: 2, email: "b@b.b", location: "Paris", type: "5">, #<User id: 1, email: "a@a.a", location: "London", type: "2">]

1 Ответ

0 голосов
/ 06 января 2012
class User

  # ...

  def type
    return @type if @type
    @type = Types.find(:last, :conditions => ["user_id_addressedto = #{user.id}"])
  end
end

Таким образом, это в модели, но не в самой базе данных - и она кешируется, поэтому запрашивается только в первый раз, когда вам это нужно. То есть, только если это нужно вам достаточно редко.

Примечание: если вы извлекаете 25 пользователей и читаете их type, это 25 дополнительных вызовов SQL. Может быть, вы хотите создать ассоциацию или столбец scope.

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