2013-11-28 4 views
1

Это очень простая ассоциация Active Record, которую я пытаюсь создать, и это разочаровывает то, что это не делается успешно.Не удалось создать Active Record Association

У меня есть две модели, почта и пользователь. User.rb имеет ничего, кроме has_many :posts и Post.rb имеет ничего, кроме belongs_to :user. Я запустил rake db: migrate и проверил, что в моей таблице сообщений есть столбец user_id.

Когда я иду на консоль, я не могу установить связь между новыми объектами.

Во-первых, я делаю новый экземпляр пользователя, как max = User.create(:name=>"Max") Далее я делаю новый Post экземпляр как post = Post.create(:user_id=>1, title=>"FirstPost")

Я затем попытаться ввести max.posts но получить NoMethodError undefined method 'post=' Если я пытаюсь создать ассоциацию, как max.post = post , Я получаю ту же ошибку.

Наконец, я попытался добавить attr_accessor :posts к модели пользователя.

Теперь я могу напечатать max.posts, но я просто получаю nil.

Что мне здесь не хватает?

+1

сообщение от полной ошибки пожалуйста –

+0

теперь, когда я добавил 'attr_accessor: posts', я больше не получаю сообщение об ошибке , просто 'nil' –

+1

вы можете добавить полный код и полную ошибку и журналы того, что вы делаете? «Я сделал это и получил это», на самом деле не работает. – sevenseacat

ответ

1

Это потому, что в User отсутствует метод 'post ='.

Попробуйте следующее:

max = User.create(:name=> "Max") 
max.posts.create(:title => "FirstPost") 
max.posts 

В качестве альтернативного способа:

max = User.create(:name=> "Max") 
post = Post.new(:user => max, :title => "FirstPost") 
post.save 
max.posts 
+0

Глядя на «альтернативный путь» - так что мне нужно будет иметь столбец 'user' в моей таблице' posts', правильно? Почему это работает, но установка атрибута 'user_id' не работает? –

+1

, где указано user_id "1", которое не может быть идентификатором последнего созданного пользователя. –

+0

Огромное спасибо за вашу помощь –

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