2012-03-01 64 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