diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index d10f09ff..652025fc 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -77,6 +77,7 @@ class HomeworkAttachController < ApplicationController if bid.homeworks.where("user_id = ?",User.current).count == 0 user_id = params[:user_id] bid_id = params[:bid_id] + project_id = params[:new_form][:project_id] sta = 0 name = params[:new_form][:name] description = params[:new_form][:description] @@ -85,7 +86,8 @@ class HomeworkAttachController < ApplicationController :state => sta, :name => name, :description => description, - :bid_id => bid_id + :bid_id => bid_id, + :project_id => project_id } @@ -177,8 +179,10 @@ class HomeworkAttachController < ApplicationController if User.current.admin? || User.current.member_of?(course) name = params[:homework_name] description = params[:homework_description] + project_id = params[:homework_attach][:project_id] @homework.name = name @homework.description = description + @homework.project_id = project_id if params[:attachments] @homework.save_attachments(params[:attachments]) end @@ -196,7 +200,7 @@ class HomeworkAttachController < ApplicationController def destroy #@homework = HomeworkAttach.find(params[:id]) - if User.current.admin? || User.current == @homework + if User.current.admin? || User.current == @homework.user if @homework.destroy respond_to do |format| format.html { redirect_to project_for_bid_path @homework.bid } diff --git a/app/helpers/homework_attach_helper.rb b/app/helpers/homework_attach_helper.rb index 28bb48d3..4fbedb3a 100644 --- a/app/helpers/homework_attach_helper.rb +++ b/app/helpers/homework_attach_helper.rb @@ -54,4 +54,16 @@ module HomeworkAttachHelper raise RuntimeError, 'unknow type, Please input you type into this helper.' end end + + def user_projects_option + projects = Project.where("id < 8") + type = [] + projects.each do |project| + option = [] + option << project.name + option << project.id + type << option + end + type + end end \ No newline at end of file diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb index e60d4230..99d540bd 100644 --- a/app/models/homework_attach.rb +++ b/app/models/homework_attach.rb @@ -9,6 +9,7 @@ class HomeworkAttach < ActiveRecord::Base has_many :homework_users, :dependent => :destroy has_many :users, :through => :homework_users seems_rateable :allow_update => true, :dimensions => :quality + belongs_to :project safe_attributes "bid_id", "user_id" @@ -30,7 +31,7 @@ class HomeworkAttach < ActiveRecord::Base result end - def project + def project_for_homework work = HomeworkForCourse.find_by_bid_id(self.bid_id) if work work.project diff --git a/app/models/project.rb b/app/models/project.rb index b8e11d99..ee9f7b2f 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -30,6 +30,7 @@ class Project < ActiveRecord::Base # Specific overidden Activities + belongs_to :homework_attach has_many :time_entry_activities has_many :members, :include => [:principal, :roles], :conditions => "#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}" has_many :memberships, :class_name => 'Member' diff --git a/app/views/homework_attach/edit.html.erb b/app/views/homework_attach/edit.html.erb index f7104840..bfcf1f64 100644 --- a/app/views/homework_attach/edit.html.erb +++ b/app/views/homework_attach/edit.html.erb @@ -42,11 +42,17 @@
<%= form_for(@homework) do |f|%>

- 标 题: + 标      题:  <%= f.text_field :name, :required => true, :name => "homework_name", :size => 60, :style => "width:490px;"%>

- 描 述: + 提交项目: + <%= f.select :project_id, options_for_select(user_projects_option,@homework.project.id),:name => "project_id", :required => true%> + <%= link_to '创建项目', new_project_path(course: 0, project_type: 0), :target => '_blank' %> +

提交项目可以为空

+

+

+ 描      述:  <%= f.text_area :description, :rows => 8, :name => "homework_description", :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %> diff --git a/app/views/homework_attach/new.html.erb b/app/views/homework_attach/new.html.erb index 618fc15a..c74d17bd 100644 --- a/app/views/homework_attach/new.html.erb +++ b/app/views/homework_attach/new.html.erb @@ -26,6 +26,12 @@ 标 题: <%= f.text_field "name", :required => true, :size => 60, :style => "width:490px;" %>

+

+ 提交项目: + <%= f.select :project_id, options_for_select(user_projects_option),:name => "project_id", :required => true%> + <%= link_to '创建项目', new_project_path(course: 0, project_type: 0), :target => '_blank' %> +

提交项目可以为空

+

描 述: diff --git a/db/migrate/20140617092219_add_project_id_to_homework_attach.rb b/db/migrate/20140617092219_add_project_id_to_homework_attach.rb new file mode 100644 index 00000000..d18bf3c3 --- /dev/null +++ b/db/migrate/20140617092219_add_project_id_to_homework_attach.rb @@ -0,0 +1,5 @@ +class AddProjectIdToHomeworkAttach < ActiveRecord::Migration + def change + add_column :homework_attaches, :project_id, :integer, default: 0 + end +end diff --git a/db/migrate/20140618020535_remove_data_to_homework_attach.rb b/db/migrate/20140618020535_remove_data_to_homework_attach.rb new file mode 100644 index 00000000..16a1b491 --- /dev/null +++ b/db/migrate/20140618020535_remove_data_to_homework_attach.rb @@ -0,0 +1,25 @@ +class RemoveDataToHomeworkAttach < ActiveRecord::Migration + def up + bidding_projects = BidingProject.joins(:bid).where("bids.reward_type = 3") + bidding_projects.each do |biding| + homework = HomeworkAttach.new + homework.project_id = biding.project_id + homework.bid_id = biding.bid_id + homework.created_at = biding.created_at + homework.updated_at = biding.updated_at + homework.reward = biding.reward + homework.description = biding.description + homework.user_id = biding.user_id + homework.state = 0 + homework.save + end + end + + def down + bidding_projects = BidingProject.joins(:bid).where("bids.reward_type = 3") + bidding_projects.each do |biding| + homework = HomeworkAttach.where("bid_id = #{biding.bid_id} and user_id = #{biding.user_id}") + homework.first.destroy + end + end +end diff --git a/db/schema.rb b/db/schema.rb index c8cf7128..18cc2a71 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20140617013146) do +ActiveRecord::Schema.define(:version => 20140618020535) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -348,12 +348,13 @@ ActiveRecord::Schema.define(:version => 20140617013146) do create_table "homework_attaches", :force => true do |t| t.integer "bid_id" t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "reward" t.string "name" t.string "description" t.integer "state" + t.integer "project_id", :default => 0 end create_table "homework_for_courses", :force => true do |t|