是否可以通过RoR中的belongs_to或has_one关联为属性设置别名?

时间:2017-09-06 21:35:48

标签: ruby-on-rails ruby-on-rails-5

我想通过关联使用alias_attribute或类似的别名属性。我可以使用delegate执行类似操作,但我必须委派所有生成的方法(attribute=attribute?等。)

这样的事情是可能的:

class State < ApplicationRecord
  has_many :cities
end

class City < ApplicationRecord
  belongs_to :state

  alias_attribute :state_flag, :state.flag
end

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是使用方法而不是别名。

类似的东西:

class City < ApplicationRecord
  belongs_to :state

  def state_flag
    state.flag
end

然后,您将能够调用:city.state_flag来检索状态标志。

答案 1 :(得分:0)

我很确定你因此而被delegate困住了。好消息是,您可以在一条线上委托您需要的所有方法。

belongs_to :state

delegate :flag, :flag=, to: :state, prefix: true

但是,如果您委派flag=,则需要记住在保存城市时保存关联状态。