Rails:在单击一个提交按钮时在两个数据库中插入2个记录(保存其他控制器中一个控制器的记录)

时间:2012-10-02 06:21:37

标签: ruby-on-rails model controller save

我有2个模型,分别对应2个独立的数据库表 一个是task,另一个是bookedhour

关系就像

Task: has_many booked_hours
BookedHour: belongs_to Task

要创建任务,该任务的模型BookedHour需要预订时间。它以新任务的形式出现,并且attr_accessor在任务模型中声明 现在我想在保存任务时存储任务预订时间。(基本上我想将新的taskbookedHours保存在单个中点击)

我在创建任务的方法中使用以下代码,但它确实无效。 保存task(@task.save)

后,我写了这一行
BookedHour.create(:user_id => @user_id, :project_id => session[:actual_project].id, :hours_booked => params[:task][:spend_today])

我在控制台中关注并且不保存bookedhours的记录,但它成功保存了新任务。

BookedHour Columns (0.7ms)   SHOW FIELDS FROM `booked_hours`      
  SQL (0.1ms)   BEGIN     
  SQL (0.0ms)   ROLLBACK

2 个答案:

答案 0 :(得分:1)

Create实际上不会将记录保存到数据库中,需要创建!创建和保存。

此外,BookedHour.create中没有任何地方可以将任务记录与预订的小时记录相关联。

尝试以下方法:

BookedHour.create!(
  :task_id => @task.id, 
  :user_id => @user_id, 
  :project_id => session[:actual_project].id, 
  :hours_booked => params[:task][:spend_today]
)

答案 1 :(得分:1)

尝试

@task.booked_hours.create!(:user_id => @user_id, 
                           :project_id => session[:actual_project].id, 
                           :hours_booked => params[:task][:spend_today])

如果出现问题(如果事务回滚,则存在问题),您将看到异常,并且您将能够解决该问题。

您可以发布BookedHour课程的验证部分吗? (所有行以“belongs_to”开头,“验证_...”和“验证”在类定义中)