【发布时间】:2014-04-25 16:25:40
【问题描述】:
努力使用 ActiveRecord 自动将 :id 属性分配为主键,即使它是一个单独的列。
Table - legacy-table
id - int
pk_id - int (primary key)
name - varchar2
info - varchar2
型号
class LegacyModel < ActiveRecord::Base
self.table_name = 'legacy-table'
self.primary_key = 'pk_id'
default_scope {order(:name => :asc)}
alias_attribute :other_id, :id
end
我不关心 ActiveRecord 自动将主键 (pk_id) 分配给 :id 属性,但是我失去了对实际 id 列的所有访问权限。尝试使用别名只是将我指向主键。
但是,对这个问题的一个警告是,从视图中我可以使用@legacymodel[:id] 访问 id 列。但是再次调用@legacymodel.id 时,我得到了 pk_id 列的值。我想要的是能够调用 @legacymodel.other_id 并让它指向 id 列。相反,@legacymodel.service_id、@legacymodel.id 和 @legacymodel.pk_id 都指向同一列 pk_id
请注意,这是一个遗留数据库,修改列是不可能的。我正在使用带有 MySql 的 Rails 4。
有没有办法解决这个问题?为什么@legacymodel[:id] 给我的结果与@legacymodel.id 不同?
【问题讨论】:
标签: mysql ruby-on-rails rails-activerecord primary-key