RoR3设计 - 每个用户的项目

时间:2011-01-17 21:13:27

标签: ruby-on-rails-3 devise

我正在开发用于管理用户项目的非常简单的应用程序。有两个模型,用户和项目。用户应仅查看他们创建的项目。因此,模型Project具有user_id列,用于链接User。机型:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :rememberable, :validatable
  has_many :projects, :dependent => :destroy

  attr_accessible :email, :password, :password_confirmation, :remember_me
end

class Project < ActiveRecord::Base
  belongs_to :user
end

当用户创建新项目时,应自动将用户ID添加到user_id列。这是在创建操作下的 Project 控制器中完成的:

  def create
    params[:project][:user_id] = current_user.id
    @project = Project.new(params[:project])
    #...

当我将user_id添加到params [:project]时,这是有效的,但我觉得这不是一个正确的方法。或者是吗?

1 个答案:

答案 0 :(得分:3)

  def create
    @project = current_user.projects.build(params[:project])
    #...

http://guides.rubyonrails.org/association_basics.html#has_many_collection_build