处理具有非Rails传统命名的传统系统。请注意,所有表和属性都是大写的,这在sqlserver-adapter中意味着ID
与id
不同。Rails 4,sqlserver-adapter:使用alias_attribute重命名传统属性
我以为alias_attribute :new, :OLD
允许您指定一个名称,您可以在ActiveRecord/ActiveRelation
查询中使用该名称。从我在下面看到的(在rails console
中测试),情况并非如此。
的最终目标是通过使每个模型制作的Rails的常规方法的遗留系统“行为”有一个ID
属性等等...
模型定义:
# app/models/organization.rb
class Organization < ActiveRecord::Base
self.table_name = "ORGANIZATION"
self.primary_key = "ORGANIZATION_ID"
alias_attribute :id, :ORGANIZATION_ID
end
不起作用:
Organization.select(:id)
=>invalid column name 'id'
= Organization.select(:ID)
>invalid column name 'ID'
Organization.select("ID")
=>invalid column name 'ID'
是否工作:
Organization.select(:organization_id)
=><finds record>
Organization.select(:ORGANIZATION_ID)
=><finds record>
Organization.select("organization_id")
=><finds record>
Organization.select("ORGANIZATION_ID")
=><finds record>
我试图切换它们,得到了相同的问题。关于您的特定示例,Rails已经添加了一个“?”到每个属性的末尾并返回一个布尔值。您不需要自己创建查询属性。 – 2014-09-26 12:58:29