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
コードを更新して、いくつかの puts コマンドを追加しました。これらは正常に機能しており、コンソールで期待どおりの結果が得られています。
ここでの唯一の問題は、がモデルc.projects
に保存されていないことです。users