我想通过关联使用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
答案 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=
,则需要记住在保存城市时保存关联状态。