我正在开发用于管理用户项目的非常简单的应用程序。有两个模型,用户和项目。用户应仅查看他们创建的项目。因此,模型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]时,这是有效的,但我觉得这不是一个正确的方法。或者是吗?
答案 0 :(得分:3)
def create
@project = current_user.projects.build(params[:project])
#...
http://guides.rubyonrails.org/association_basics.html#has_many_collection_build