当你没想到它时,你有一个零对象!

时间:2009-10-02 04:37:46

标签: ruby-on-rails

按照本教程“http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/”,我无法理解主题中的错误。

根据图书馆修改“app / views / posts / show.html.erb”时会发生这种情况。

现在我已经让它以前的方式工作了(另一个教程),但不得不在帖子控制器中添加@users = user.find_all之类的内容。

我的问题是 - 在不修改控制器的情况下,只将关系添加到模型中 - 你仍然可以使用类似“post.user.name”之类的内容,就像问题中的教程一样。

我是菜鸟 - 但是它与User表没有user_id有关吗?那么帖子的表怎么能把它链接到用户表呢?

任何人都可以做这个教程并实际上让它工作吗?它与我使用RUBY-1.8.6-27而不是最新的2.x.x有什么关系?

我不知道。我需要对它进行排序,因为它将在我想要的应用程序中使用HEAVILY。

2 个答案:

答案 0 :(得分:1)

使用此命令创建迁移时:

ruby script/generate migration add_user_id_to_post user_id:integer

迁移脚本会从您的迁移名称知道add user_idPost模型。 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

检查数据库以查看Post表中是否存在user_id。否则 post.user.name 将无效

答案 1 :(得分:0)

是的 - 完成了所有这些。

我有一个不同的例子正常工作 - 认为它可能与用户表没有一个名为“id”的实际列有关 - 就像我工作的那样。

按照那个例子(教程) - 它不会工作。你说它应该吗?与ruby或rails版本有什么关系?我正在使用Windows - Ruby v 1.8.6和rails 2.3.4 - 显然是用于DB的mysql插件。