可以将功能从一个模型重定向到另一个模型

时间:2018-09-25 08:46:56

标签: ruby-on-rails

我有两个ActiveRecord模型:

class Owner < ApplicationRecord
    has_one :fish_tank
end

class FishTank < ApplicationRecord
    belongs_to :owner

    def feed
        # do something
    end
end

我想让主人喂它的鱼缸。现在,我将在owner类中创建一个函数来调用feed类,例如:

def feed
    fish_tank.feed
end

是否可以将函数调用重定向到另一个模型,例如:

has_many :something, through: :anything

是否有一种更清洁,更安全的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

  

我想让主人喂鱼缸

     

是否有一种更清洁,更安全的方法来做到这一点?

是的,您可以使用delegate方法。在FishTank模型中

class FishTank < ApplicationRecord
  belongs_to :owner
  delegate :feed, to: :owner #add this line

  def feed
    # do something
  end
end

现在您可以执行Owner.new.feed来调用feed方法