Стремительная загрузка не работает в Rails 2.2.2 - PullRequest
0 голосов
/ 11 мая 2009

Я работаю с моделями, аналогичными следующим:

class Owner < ActiveRecord::Base
  has_many :owned
end

class Owned < ActiveRecord::Base
  belongs_to :owner
end

Вы можете предположить, что own_id и owner_id находятся в нужных местах. Проблема в том, что в контроллере для другой цепочки mvc в приложении

@owner = Owned.find_by_id(owned_id, :include => :owner)

не работает. Естественно, я получаю столбец owner_id, но не могу

@owned.owner # is just nil

Что дает? Я имею в виду, я мог бы выполнить задание непосредственно перед передачей результата в представление:

@owned.owner = Owner.find_by_id(@owned.owner_id)

но это кажется глупым. Давай, смущай меня. В чем очевидная вещь, которую я пропустил? Это работает в других местах моего приложения, но я не могу заметить различия. Есть ли общие ловушки? Все помогает.

Спасибо

Ответы [ 2 ]

1 голос
/ 11 мая 2009

Репутация в StackOverflow не основана на файлах cookie. Возможно, вам придется войти снова или что-то еще.

Ваш вопрос подразумевает, что у вас есть поле Owned_id в таблице владельца. Вам это не нужно, и вы должны удалить его.

Вам просто нужно целое поле owner_id в собственной таблице.

Вы можете получить доступ к своим записям и отношениям несколькими способами. Сначала давайте начнем с доступа к записи владельца.

owner = Owner.find(owner_id)
owned = owner.owned # this is an array since you a 'has_many' relationship

Обычно вы хотите получить доступ к своим записям следующим образом:

for owned in owner.owned
 puts owned.name # or access any other attributes
end

Если вы хотите сначала получить доступ к своим записям, вы можете сделать следующее:

@owned = Owned.find(:all, :conditions => [ "owner_id = ?", owner_id ])
# @owned is an array so you need to iterate through it
for owned in @owned
  puts owned.owner.name # or access any other attribute from the owner
end

После того, как эти запросы будут работать нормально, вы можете начать загружаться, добавив: include в свои операторы find. Обратите внимание, что это может представлять интерес для оптимизации, но не обязательно с самого начала.

Надеюсь, это поможет.

1 голос
/ 11 мая 2009

Я просто продолжаю выигрывать. Соответствующий объект «Владелец» был удален из таблицы владельцев.

Самое смешное, что до того, как я создал учетную запись, у меня была тонна кармы в моей личности на основе файлов cookie. Потом мои куки испортились, и я больше не могу задавать ничего, кроме глупых вопросов, и моя карма стоит на 1. Хорошо.

...