2012-03-01 63 views
0

我正在使用代碼來更新字段,我必須根據某些條件使用不同的方法。代碼片段看起來像使用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

您正在混淆在_instance_這裏_class_的含義。如果你使用正確的措辭會有幫助。我不明白你在做什麼。 'issue.status.name'的含義是什麼?你的問題模型是怎樣的? – iltempo 2012-03-01 07:50:01

+0

問題類是一個ActiveRecord類,它包含belongs_to:status,:class_name =>'IssueStatus',:foreign_key =>'status_id'我只想知道如何更新狀態使用問題的對象 – 2012-03-01 08:01:45

回答

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更新您的狀態:您無法在belongs_to關聯上執行此操作。

+0

thnx清理它 – 2012-03-01 08:55:58