Rails 3:在调整现有的sqlite db之后的未定义方法

时间:2012-06-14 14:50:59

标签: ruby-on-rails-3 sqlite methods undefined rails-console

在rails控制台中执行User.first和Post.first工作正常。 Post.first.user工作正常,但User.first.posts给了我一个未定义的方法错误

模特:

class User < ActiveRecord::Base
    attr_accessible :role :user_email, :user_name

    has_many :posts
end

class Post < ActiveRecord::Base
    attr_accessible :content, :status, :title, :user_id

    belongs_to :user
    has_many :comments
end

当我创建一个新项目时,一切正常,但在这种情况下我做了一些不同的事情。我将现有数据库(sqlite)从另一个Web应用程序(非rails)改编为rails。我所做的是重命名列以适应rails约定,之前我使用用户名作为唯一键,并使用它来链接到帖子所有者我将列名更改为user_id并将所有值更新为相关的用户ID。我也将列类型和值更改为int值。

评论也是如此:Comment.first.post有效,但Post.commments给出了未定义的方法错误。

在执行User.joins(:post(s))时,我收到错误“找不到关联名称'帖子'”,但Post.joins(:user)工作正常。

  

编辑:   对我感到羞耻 - 我遗漏了我认为不相关的相关信息。

     

无论如何 - 我有一个名为role的列,因此User模型具有attr_accessible:role --- once&gt;我删除了一切都按预期工作。

     然而,我不明白为什么这应该有所作为。这个:&gt; https://github.com/ryanb/cancan/wiki/Role-Based-Authorization用户模型具有:角色和我&gt;会假设任何基于用户的应用程序都具有has_many依赖性,因此像我的那样失败。

     

......或者还有其他我想念的东西吗?

0 个答案:

没有答案