class Task < ActiveRecord::Base
has_many :notes, :as => :notable, :dependent => :destroy
has_many :work_times, :dependent => :destroy
end
class WorkTime < ActiveRecord::Base
belongs_to :task
end
class NotesController < ApplicationController
end
end
####
请帮忙吗?
答案 0 :(得分:1)
您只需获取对象并将其值更改为:
user = User.first
user.username = 'changed_name'
user.save # and save it if you want
但是,这实际上是属于模型的代码,应该用模型方法包装。
答案 1 :(得分:1)
由于关系是has_many
,您需要使用特定时间,而不是聚合:
work_time = @task.work_times.last
work_time.start_time = Time.now
work_time.save!
在这种情况下,选择并操纵最后一个WorkTime记录。也许你想使用第一个,或者选择条件:
work_time = @task.work_times.where(:active => true).first
有很多方法可以选择正确的记录进行操作,但你的问题有些模糊。
如果您要创建新条目而不是修改条目,则可能需要执行此操作:
@task.work_times.create(:start_time => Time.now)
这只是运用ActiveRecord模型关系。
答案 2 :(得分:1)
正如其他几个答案所提到的,你需要一个WorkTime类型的对象来传递值。
从您发布的代码中看起来并不像您有这样的实例。您可以找到一个(WorkTime.find ..)或创建一个(WorkTime.new ..)
看起来你有一个音符实例(@note),虽然我不知道它来自哪里......你可以使用以下方法获取适当的WorkTime对象:
@note.task.work_times
或其中的第一个:
@note.task.work_times.first