0

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!と の両方を試しましたが、どれも機能しませんでしたslicegsub何か不足していますか?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

4

0 に答える 0