保存记录..但不保存…… :(

我有一个模型的静态方法,它创建多个记录。 保存父节点时调用此方法,将用于创建适当n个子记录的数据传递给此方法(new_record),然后迭代传递给它的数组,并创建子记录。

工作有很多工作活动。 此方法new_record属于job_activities模型,在保存作业记录时在job_controller中调用。 基本上尝试以单一forms实现两个模型。 作业“has_many”job_activities,Job_activites“belongs_to”作业。

这是我到目前为止所放在一起的 –

def self.new_record(sk_job_id, activities_list) activities_list.each do | act | puts "AAAAAAAAAAAAAAAAAAAAAAA creating a new record for "+act.inspect+" and " + sk_job_id.to_s ja = JobActivity.new puts "Job ID SK = "+sk_job_id.to_s puts "act = "+act puts "Record before assignment "+ ja.inspect ja.job_id_sk = sk_job_id ja.job_activity = act ja.created_by = "raghav" ja.updated_by = "raghav" puts "Record after assignment "+ ja.inspect ja.save! puts "record after saving "+ ja.inspect end end 

发生的奇怪的事情是,对象ja的前后分配状态反映了“created_by”的赋值,而不是job_id_sk和job_activity的赋值…

并且,正如所建议的那样,我实现了保存! 但这没有提出任何例外..它仍然非常默默地表现它做… 🙁

 AAAAAAAAAAAAAAAAAAAAAAA creating a new record for "ACT1" and 40 Job ID SK = 40 act = ACT1 Record before assignment # Record after assignment # record after saving # 

但是,当我去检查应该保存数据的mysql表时,我看到只传递了NULL值…

 mysql> select job_id_sk, job_activity from job_activities; +-----------+--------------+ | job_id_sk | job_activity | +-----------+--------------+ | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | | NULL | NULL | +-----------+--------------+ 5 rows in set (0.00 sec) 

我错过了某个地方的东西吗?

model#save返回true或false,但是model#save! (注意方法名称末尾的! )将引发exception而不是返回false。

可能是模型未通过validation或未正确设置。 使用save! 会立即显然失败,告诉你实际上是错的。

发现问题,解决方案……

我使用attr_accessor作为模型,而我应该使用attr_accessible …

詹姆斯对这个问题的回应帮助了我..

在ruby对象上调用.save只对所有字符串传递nil