如何在Rails 5中为委托方法定义自定义名称?

Lor*_*lor 2 ruby-on-rails rails-activerecord ruby-on-rails-5

我有一个带委托方法的模型,

class Card < ApplicationRecord
  has_one :meta_sm2

  delegate :next_repetition,
           to: :meta_sm2
end
Run Code Online (Sandbox Code Playgroud)

因为底层模型(当前meta_sm2)可能在将来发生变化,所以我想将委托方法next_repetition设置为自定义名称,priority例如.

我如何定义自定义名称委托方法,以便我可以调用next_repetition类似的card.priority

the*_*guy 8

您可以使用alias_method来实现此目的.

class Card < ApplicationRecord
  has_one :meta_sm2

  delegate :next_repetition,
           to: :meta_sm2

alias_method :priority, :next_repetition

end
Run Code Online (Sandbox Code Playgroud)