【发布时间】:2013-02-06 20:10:22
【问题描述】:
首先这是我的第一个 Rails 应用程序,所以请放纵...我阅读了 http://guides.rubyonrails.org/association_basics.html 中的 Rails 关联指南,然后开始编写我自己的项目。我的问题是我不能做像@project.user.email 这样的事情,因为@project.user 似乎一直都是零。所有对象都会发生这种情况。 @user.role.name 还抛出“nil:NilClass 的未定义方法”;我确定我在模型定义方面做错了,但我不明白它是什么。我感谢您的帮助。谢谢。
class Role < ActiveRecord::Base
has_many :users
attr_accessible :name
end
class User < ActiveRecord::Base
belongs_to :role
has_many :projects
attr_accessible :email, :password, :password_confirmation, :role_id, :role
end
class Project < ActiveRecord::Base
belongs_to :user
belongs_to :project_type
attr_accessible :id, :project_type_id, :title, :description
end
class Project_Type < ActiveRecord::Base
has_many :projects
attr_accessible :name
end
一个例子是我做的项目的索引视图(HAML):
%td= proyecto.user.email
这是行不通的。不过,
%td= proyecto.user_id
工作正常。
【问题讨论】:
-
请包含产生错误的代码。
-
for
@project.user:你的项目表中有user_id吗?对于@user.role:从用户模型中的 attr_accessible 中删除:role。 -
@MrTheWalrus 在项目/索引的脚手架视图中,我正在执行此操作 (HAML):%td= project.user.email ...这不起作用,但 project.user_id 可以.
-
谢谢@SybariteManoj,是的...我在项目表中有user_id。
-
首先 - 你不需要 attr_accessible 用于 :id。第二 - 提供返回错误的代码。在你的情况下,你更可能需要 habtm 关系
标签: ruby-on-rails ruby-on-rails-3 rails-activerecord model-associations