2012-03-01 2 views
0

Я использую код, в котором для полей обновления я должен использовать разные методы на основе некоторого условия. фрагмент кода выглядитusing update_attribute для обновления атрибутов класса в Rails

@issue = Issue.find(some_id) # Issue is ActiveRecord class 

    if 'class fields' # some condition checking 
    @issue.send("status").name = data  # status is a class and name is its attribute 
    @issue.save 
    else 
    @issue.update_attribute("subject", data) # subject is a string 
    end 

я ищу решение, где я могу использовать update_attribute для обновления атрибутов класса для, например,

@issue.update_attribute(@issue.:status.name, data) # invalid 

может быть я делаю некоторые вещи глупые , но я хочу знать, лучший подход

Thnx.

+0

Вы смешиваете значение _class_ с _instance_ здесь. Было бы полезно, если бы вы использовали правильную формулировку. Я не понимаю, что вы пытаетесь сделать. В чем смысл 'issue.status.name'? Как выглядит ваша модель проблемы? – iltempo

+0

Класс выдачи - это класс ActiveRecord, и он содержит принадлежность: status,: class_name => 'IssueStatus',: foreign_key => 'status_id' Я просто хочу знать, как я могу обновить статус с помощью объекта Issue –

ответ

0

Вы должны использовать accepts_nested_attributes_for (систему.

В классе эммитирование необходимо определить свой статус ассоциации как nested_attributes

class Issue < AR 
    has_one :status 
    accepts_nested_attributes_for :status 
end 

После вы можете обновить свой статус

@issue.update_attribute({:status_attributes => {'name' => 'data'}}) 

PS : Вы не можете сделать это в ассоциациях, принадлежащих__.

+0

thnx для его очистки –

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