我是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
模型。