【发布时间】:2012-12-01 18:54:25
【问题描述】:
这是我的联想:
- 因为用户有很多项目
- 一个项目属于一个用户
用户模型(user.rb)
class User < ActiveRecord::Base
has_many :projects
attr_accessible: :available, :department, :name, :skills, :title, :photo
end
项目模式(project.rb)
class Project < ActiveRecord::Base
belongs_to :user, :foreign_key => :user_id
attr_accessible :project_name
end
这是我的 show.erb.html 文件中的代码
<%= @user.projects.each do |project| %>
<p><%= projects.project_name %></p>
<% end %>
但这只是显示两个像这样的括号“[]”。这让我觉得这是一个空数组。
因此,当我在 rails 控制台中运行 Project.find(1) 以查看项目是否与用户关联时,它会输出以下内容:
=> #<Project id: 2, project_name: "This is a project. ", created_at: "2012-11-12 02:29:28", updated_at: "2012-11-12 02:29:28", user_id: nil>
用户 ID 为零?什么给了?!
有人知道我做错了什么吗?谢谢!
编辑:
这是添加外键的迁移:
class AddForeignKeyToProjects < ActiveRecord::Migration
def change
add_column :projects, :user_id, :integer
end
end
编辑 2
这是控制器中的实例(这可能是问题所在)
项目控制器
def new
@project = Project.new(params[:project], params[:user_id])
end
用户控制器
def show
@user = User.find(params[:id], params[:project_name])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
【问题讨论】:
-
显示您如何将项目分配给用户的代码在哪里?
-
你指的是协会吗?它们在模型中。
-
我指的是那个特定的项目。当您定义该项目时,您应该说 project.user = User.find(1) 或类似的东西。你这样做了吗?
-
请发布您的迁移。
-
您需要向我们展示您是如何创建项目实例的,以便我们帮助您找出未分配 user_id 属性的原因。
标签: ruby-on-rails-3 model associations