Выбор модели второго уровня с активной записью рельсов - PullRequest
5 голосов
/ 21 января 2010

У меня есть отношения, в которых пост принадлежит городу, а inturn принадлежит государству, как:

class Post < ActiveRecord::Base
  belongs_to :city
end
class City < ActiveRecord::Base
  belongs_to :state
end

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

@ post = Post.find: all,: include => [: city]

Любая помощь приветствуется.

Спасибо.

Ответы [ 2 ]

9 голосов
/ 21 января 2010
Post.all( :include => { :city => :state })
4 голосов
/ 21 января 2010

Rails справится с этим за вас, благодаря отношению own_to эта информация выбирается автоматически.

@posts = Post.find(:all)

@posts теперь содержит логику для извлечения подробностей city и city.state для всех возвращаемых сообщений.

Если вы планируете использовать все эти детали , вам следует их загрузить, указав :include => { :city => :state } как Farrel и указав mckeed.

Примечание: , чтобы заставить его работать наоборот (и это также считается хорошим поведением, определяющим модель), вы также должны добавить ассоциацию has_many или has_one. См. Руководство по основам ассоциации .

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