0

Railsでのコーディングは初めてです。あなたが初心者の質問かもしれないと思うもので私を助けてくれれば素晴らしいでしょう.Hereは私のコードです:

def create
@project = Project.new(params[:project])
if @project.save
    redirect_to new_project_path
end

student=@project.student_str.split(";")
@users = User.where(:code => student)

@users.each do |c|
puts c.email
end

@users.each do |c|
puts "I'm here"
c.projects = "#{c.projects};#{@project.id}"

end



end

したがって、create メソッドでは、新しいプロジェクトが作成されるたびに、各学生の ID 番号が「;」で区切られた、student_str という文字列が格納されます。split 関数を使用してその文字列を配列に分割し、学生 ID の配列を取得します。puts c.emailputs "I'm here"を使用して、ループが正常に機能していることを確認します。端末で適切な出力が得られます。

ここでの問題は、

c.projects = "#{c.projects};#{@project.id}"

それは単に機能していないようです。この行が実行されると、私のモデルは更新されません。エラーは発生しません。これを修正するために私がしなければならないことがあるかもしれないことを教えてもらえますか?

ありがとう!

4

1 に答える 1

1

c.saveプロジェクト属性を更新した後に呼び出す必要があります。そうしないと、オブジェクトは更新されますが、データベースは更新されないため、次回ロードしたときに変更が失われます。

于 2013-07-19T12:23:19.997 に答える