Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 更新的值未保存到Rails中的db_Ruby On Rails_Ruby_Sqlite - Fatal编程技术网

Ruby on rails 更新的值未保存到Rails中的db

Ruby on rails 更新的值未保存到Rails中的db,ruby-on-rails,ruby,sqlite,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.sp

我是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
切片
以及
gsub
,它们都不起作用。我错过什么了吗?我是否需要一些库来制作
切片方法工作

编辑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
我更新了代码,添加了几个puts命令。 这些工作正常,我在控制台上得到了预期的结果


这里唯一的问题是,
c.projects
没有保存到
users
模型中。

您试图用这行代码做什么:
@users.first.projects.slice!(“;#{@project.id}”)
?下面的一行不应该是
@users.first.save
(或者更好,取消对
c=@users.first
的注释,并在接下来的两行中使用
c
save
不是ActiveRecords集合的一种方法,因此我不确定您为什么没有收到此代码的错误。您的代码中没有使用CamelCase,为什么在其余的解释中使用它?请编辑您的文本,使其可读。
切片命令用于从存储在users表的projects列中的Id列表中删除项目Id。还有@mbrach,它不起作用。。。什么是CamelCase?“什么是CamelCase?”:D:D:D:D本周评论!。。。我真的不知道,如果你能启发我,我将不胜感激。