Как передать значение от контроллера к модели? - PullRequest
0 голосов
/ 20 апреля 2011
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
####

Любая помощь, пожалуйста ??

Ответы [ 3 ]

1 голос
/ 20 апреля 2011

Поскольку отношение равно 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.

1 голос
/ 21 апреля 2011

Как указано в нескольких других ответах, вам нужен объект типа WorkTime для передачи значения.

Из кода, который вы разместили, он не выглядит так, как будто вы получилитакой пример.Вы можете найти один (WorkTime.find ..) или создать новый (WorkTime.new ..)

Похоже, у вас есть экземпляр заметки (@note), хотя я неуверен, откуда это взялось .. вы можете выбрать соответствующие объекты WorkTime, используя:

@note.task.work_times

или первый из них с:

@note.task.work_times.first
1 голос
/ 20 апреля 2011

Вы просто получите объект и просто измените его значение следующим образом:

user = User.first
user.username = 'changed_name'
user.save # and save it if you want

Но на самом деле это код, который принадлежит модели и должен быть заключен в метод модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...