我有一个应用程序,用户可以在其中构建一个项目,该项目最多有 12 个志愿者时间段,其他用户可以注册参与该项目。
创建项目时,系统会要求用户提供默认(开始)时间。这个默认时间(Project_Times模型)应该写入到数据库begin_time
中Projects
自己的表中,使用project_id参数来标识它属于哪个项目。
然后,用户可以在创建后添加多达 11 个时间段,如果他们想要/需要的话@project
。
我很难让项目创建默认时间。这就是我所拥有的:
++ Projtime (projtime.rb) 模型 ++
class Projtime < ActiveRecord::Base
attr_accessible :start_time, ...
belongs_to :project
default_scope :order => 'times.amount ASC'
end
++ 项目 (project.rb) 模型 ++
class Project < ActiveRecord::Base
attr_accessible :title
belongs_to :user
has_one :project_category
has_many :projtimes, :dependent => :destroy
accepts_nested_attributes_for :projtimes
def projtimes
Projtimes.where('project_id=?', id)
end
end
++ 项目控制器 ++
class ProjectsController < ApplicationController
...
def create
@user = current_user
@project = current_user.build_project(params[:project])
@project.save
@render 'edit'
end
其中项目使用上述语法自动分配给用户。我试图复制相同的概念(考虑到每个项目有多次的事实)并为ProjtimesController
:
class ProjtimesController < ApplicationController
...
def create
@project.projtimes.build
end
end
但是,我得到一个NameError in ProjectsController#new
和uninitialized constant Project::Projtimes
我认为通过设置belongs_to
和has_many
关联,这应该可行。
帮助任何人?