2012-05-14 2 views
0

модели объединения, как показано ниже:неопределенный метод `обновление» для # <ActiveRecord :: Ассоциации :: HasOneAssociation

Модель I

class TimeLog < ActiveRecord::Base 
    has_one :custom_time_field, :dependent => :destroy 
end 

Модель II

class CustomTimeField < ActiveRecord::Base 
belongs_to :time_log 
end 

Сведения об ошибке:

a = TimeLog.find(1) 
a.custom_time_field 

#returns => #<CustomTimeField id: 1, time_entry_id: 1, status: 'incomplete', start_time: "2000-01-01 11:24:00", end_time: "2000-01-01 11:24:00"> 

a.custom_time_field.update(1, :status => '') # returns undefined method `update' 

Однако a.custom_time_field.update_attributes() работает

Теперь я могу использовать update_attributes также я могу использовать метод сохранения путем создания объекта

Но почему не могу я использовать метод обновления в таком случае? это полезно, когда несколько атрибутов необходимо обновлять за раз.

Комментарии/Указатели?

+0

Я понял, что метод обновления работает над классом, а не с объектом. но тогда как я могу назвать его с помощью класса с одной ассоциацией? –

+0

Некоторая путаница: есть ли в вашем классе CustomTimeFields 's'? Журнал показывает, что он назван без 's'. – jdoe

+0

о да. thnx для привлечения внимания. –

ответ

2

update - метод класса вашей модели. Назовите его так:

CustomTimeField.update(1, :status => '') 
+0

Я бы хотел использовать это. но у меня есть id для TimeLog во время выполнения. thnx для подсказок, хотя –

+1

Я просто сказал, что 'update' используется, когда вы знаете идентификатор. Когда у вас уже есть экземпляр вашей модели, тогда 'record.update_attributes' отлично подходит. – jdoe

Смежные вопросы