2009-10-02 3 views
0

После этого урока «http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/» и я не могу пройти мимо ошибки в теме.У вас есть нулевой объект, когда вы этого не ожидали!

Это происходит, когда я изменяю «app/views/posts/show.html.erb» в соответствии с tuorial.

Теперь у меня есть работа другой ранее (другой учебник), но мне пришлось добавить что-то вроде @users = user.find_all в диспетчере сообщений.

Мой вопрос - без изменения контроллеров, только добавление отношений к моделям - можете ли вы использовать что-то вроде «post.user.name», как учебник в quesiton.

Я noob - но будет ли это иметь какое-то отношение к таблице пользователей, не имеющей user_id? так как, черт возьми, таблица столба может получить ссылку на таблицу пользователя?

Может ли кто-нибудь сделать этот урок и на самом деле заставить его работать? Связано ли это с моим использованием RUBY-1.8.6-27, а не последним 2.x.x?

Я не знаю. Мне нужно разобраться с этим, поскольку он будет использоваться HEAVILY в приложении, которое я хочу сделать.

ответ

1

Когда вы создали свою миграцию с помощью следующей команды:

ruby script/generate migration add_user_id_to_post user_id:integer 

Сценарий миграции знает от Вашего имени миграции в adduser_id к Post модели. user_id:integer - это стандартный код ActiveRecord :: Migration для определения user_id, который является целым числом.

Вы увидите миграцию, которая создается с помощью следующего кода:

class AddUserIdToPost < ActiveRecord::Migration 
    def self.up 
    add_column :posts, :user_id, :integer 
    end 

    def self.down 
    remove_column :posts, :user_id 
    end 
end 

После вам нужно запустить:

rake db:migrate 

Проверьте вашу базу данных, чтобы увидеть user_id присутствует в Почтовом таблице , В противном случае post.user.name не будет работать

0

Yep - сделал все это.

У меня есть другой пример, работающий все нормально - подумайте, что это может иметь какое-то отношение к таблице пользователя, не имеющей фактический столбец с именем «id» ... как тот, где я работаю.

Следуя этому примеру (учебник) - он не будет работать. Вы говорите, что нужно? что-нибудь связанное с версией рубина или рельсов? Я использую Windows - Ruby v 1.8.6 и rails 2.3.4 - с плагином mysql для БД.

+0

Я использую ту же установку, что и вы, и она отлично работала для меня. Если у вас есть user_id в вашей миграции, это сработает. По умолчанию Rails по умолчанию добавляет столбец идентификатора как первичный ключ. Единственный способ отключить его - создать метод create_table с: id => false в нем? – Spasm

Смежные вопросы