как получить значения в self.find после использования: из рельсов - PullRequest
0 голосов
/ 04 марта 2010
players_data =  self.find(:all,
  :order => 'name',
  :conditions => 'p.country = c.id and p.position = po.id',
  :select => 'p.id as id, p.name as name, c.country as country, po.position as position, p.rank as rank',
  :from => 'players as p, countries as c, positions as po'
)

--------------------------------

player_data.each do | row | #puts "The Row === # {row.country}" tmpArray = [] tmpArray [0] = row.id tmpArray [1] = row.name tmpArray [2] = row.country tmpArray [3] = row.position tmpArray [4] = row.rank

Я не могу получить значения для страны и должности. Пожалуйста, предложите.

1 Ответ

0 голосов
/ 04 марта 2010

Вы, кажется, смешиваете прямую логику SQL с логикой ActiveRecord и получаете нежелательные результаты. Попробуйте вместо этого использовать Ассоциации:

class Country < ActiveRecord::Base
end

class Position < ActiveRecord::Base
end

class Player < ActiveRecord::Base
  belongs_to :country
  belongs_to :position
end

players = Player.find(:all)
players.each do |player|
  puts player.country.name
  puts player.position.rank
end

Если вы хотите использовать соглашения Rails, определите внешние ключи как table_id (т. Е. У игрока есть столбцы country_id и position_id). Это позволяет магии Ассоциации работать.

Если вы работаете с устаревшими таблицами базы данных, вы можете дополнительно указать ассоциации, следуя API ассоциаций ActiveRecord .

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