在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依赖性,因此像我的那样失败。......或者还有其他我想念的东西吗?