Ruby on rails 更新的值未保存到Rails中的db
我是Ruby和Rails的新手,一段代码给我带来了麻烦。 代码如下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
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本周评论!。。。我真的不知道,如果你能启发我,我将不胜感激。