У меня есть два класса Address
и Review
. В обзоре есть адрес, и адрес может иметь много отзывов. Я смоделировал это, сказав Review belongs_to Address
и что Address has_many Reviews
.Rails ActiveRecord - загружать только определенные связанные записи
В приложении основной вариант использования - это создание нового обзора. В рамках создания обзора пользователь вводит адрес, который за кулисами мы пытаемся сопоставить с существующей записью или при необходимости создаем новую.
Я установил маршрутизацию следующим образом: resources :addresses, only: [:new, :create, :show, :update], :as => :reviews, :path => :reviews, :controller => :reviews
. Который позволяет мне иметь URL-адреса, такие как /reviews/[:id]
.
Каков наилучший способ для загрузки адреса и одного связанного обзора с id = [: id].
До сих пор я
@review = Review.find(params[:id])
@address = @review.address
Но если я тогда сделать что-то вроде
@address.reviews
Я считаю, что ActiveRecord загрузит все связанные обзорные не то, что я хочу, как я имею в виду обзора как основного объекта, который имеет адрес как часть его.
Неужели я запутался в своем дизайне? Концептуально an address is part of a review
, но я не вижу какой-либо способ моделирования этого таким образом, что address can still have many review
'
EDIT: Я думаю, что некоторые из моих путаницы исходит из того, что мои взгляды имеют формы, которые нужно взять адрес, потому что адрес имеет accepts_nested_attributes_for :reviews
, что упрощает все проверки и создание форм.
Большое спасибо заранее!
Я не понимаю, что проблема, которую вы пытаетесь адрес. Да, '@ address.reviews' вернет все отзывы, связанные с этим адресом, но почему это проблема для вас? Вам не нужно использовать эту конструкцию, если вы этого не хотите. –
Это проблема, потому что в случаях использования приложения я только работаю с 1 адресом и 1 обзором. Я не хочу загружать все остальные обзоры. – KnownColor
Почему, по вашему мнению, они будут загружены, если вы не включите '@ address.reviews' в свой код? –