更新后的值未保存到Rails中的db

时间:2013-07-20 17:57:31

标签: ruby-on-rails ruby sqlite

我是Ruby和Rails的新手,一段代码给我带来了麻烦。 代码如下

projects_controller.rb

def update
  @project = Project.find(params[:id])
  old=@project.department.split(";")
  if @project.update_attributes(params[:project]) 
  else
 render('edit')
end

new=@project.department.split(";")
new.each { |new_each| 
    if (old.include?(new_each) == false)

    @users = User.where(:code => new_each)
    c=@users.first
    c.projects = "#{c.projects};#{@project.id}"
    c.save

end}
#Erroneous area
old.each { |old_each|
if (new.include?(old_each) == false)
    @users = User.where(:code => old_each)
    #c=@users.first
    @users.first.projects.slice!(";#{@project.id}")
    @users.save
end}
#End erroneous area
end

在删除过期的项目ID后,应该更新@users.first.projects列,但事实并非如此。我同时尝试了slice!slice以及gsub,但都没有奏效。我错过了什么吗?我需要一些库来使slice!方法有效吗?

编辑1

#Erroneous area
old.each { |old_each|
if (new.include?(old_each) == false)
    @users = User.where(:code => old_each)
    c=@users.first
    c.projects.slice!(";#{@project.id}")
    c.save
end}
#End erroneous area

效果不佳。

编辑2:

#Erroneous area
old.each { |old_each|
if (new.include?(old_each) == false)
    @users = User.where(:code => old_each)
    c=@users.first
    c.projects.slice!(";#{@project.id}")
            puts c.projects
    c.save
            puts c.projects
end}
#End erroneous area

我更新了代码以获得一些put命令。 这些工作正常,我在控制台上获得了预期的结果。

此处唯一的问题是c.projects未保存到users模型。

0 个答案:

没有答案