如何在 rails 中更改某些内容以使用不同的名称?

How can I change something to have a different name in rails?

问题是我有一个名为 empaccrl 的模型,table 称为 accrl。在 accrl 中,我有一个名为 accrual_code 的列,该列中的数据是 PERSDAY3 或 VACATION1 ...如何将它们的名称更改为 Personal 和 Vacation 而不必更改我的数据库中的数据...这是我到目前为止所拥有的,但似乎不起作用。任何帮助将不胜感激!

这是我的 empaccrl 模型

class Empaccrl < ActiveRecord::Base

  establish_connection :dev

  self.table_name = 'accrl'

  belongs_to :entry


  def accrual_code
    if @accrual_code == "PERSDAY3"
      accrual_code = 'Personal'
  end
  if @accrual_code == "VACATION1"
      accrual_code = 'Vacation'
  end
end

这是我的看法

  %table.table.table-bordered.trace-table
    %tr
    -@empaccrl.each do |ea|
      %tr
        %td.trace-table.bordered.trace-table{:style => 'width:10%;'}= ea.accrual_code

我也试过这个...但没用..

     %table.table.table-bordered.trace-table
    %tr
    -@empaccrl.each do |ea|
    - if ea.accrual_code = "PERSDAY3"
      %tr
        %td.trace-table.bordered.trace-table{:style => 'width:10%;'}= ea.accrual_code = "Personal"
    - else
      %tr
        %td.trace-table.bordered.trace-table{:style => 'width:10%;'}= ea.accrual_code = "Vacation"

你很接近!问题是实例变量 @accrual_code 没有值。 Rails 不为属性设置实例变量。您可以改为使用 self[attribute_name]:

访问该值
def accrual_code
  case self[:accrual_code]
    when "PERSDAY3" then "Personal"
    when "VACATION1" then "Vacation"
    else self[:accrual_code]
  end
end