Rails3默认范围问题

时间:2011-10-09 22:25:47

标签: ruby-on-rails

我正在尝试通过使用我的模型的默认范围重命名来从现有数据库加载列:

def self.default_scope
        Radcheck.find( :all,
       :select => ('attribute as newvalue')
       )
end

但是,我仍然会收到错误,说明属性已定义....

我希望我可以直接重命名该列,但它已被引用太多了。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

是的,属性是保留字。我知道这不是您想要听到的答案,但您确实需要更改该列的名称。

答案 1 :(得分:0)

不允许attribute。您可以考虑使用view来表示不同名称中的列,而不会影响现有引用。

答案 2 :(得分:0)

您需要引用该列,因为它是一个SQL保留字:

def self.default_scope
        Radcheck.find( :all,
       :select => "#{Radcheck.connection.quote_column_name('attribute')} AS newvalue"
       )
end

你可以使用

       :select => '`attribute` AS newvalue' 

但这是特定于数据库的 - 对您来说可能是也可能不是问题。