2012-03-01 13 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を知りたいです。あなたは

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

PSで自分のステータスを更新することができた後、あなたの必要性がnested_attributes

class Issue < AR 
    has_one :status 
    accepts_nested_attributes_for :status 
end 

のように自分のステータスの関連付けを定義し、あなたの問題のクラスではaccepts_nested_attributes_for(システム。

を使用する必要がある

+0

_class_と_instance_の意味はここにあります。適切な言葉遣いを使用すると役に立つでしょう。私はあなたが何をしようとしているのか理解していません。 'issue.status.name'の意味は何ですか?問題モデルはどのように見えますか? – iltempo

+0

IssueクラスはActiveRecordクラスで、belongs_to:status、:class_name => 'IssueStatus'、:foreign_key => 'status_id'を含んでいます。問題のオブジェクトを使用して状態を更新する方法を知りたいだけです –

答えて

0

:belongs_toの関連付けではできません。

+0

thnx –

関連する問題