Rails злится, что я инстанцирую ребенка из родительского класса - PullRequest
1 голос
/ 01 апреля 2011

У меня есть объект Animal, и когда я передаю тип, я выбираю один из подклассов и создаю его экземпляр там. Так что-то вроде:

class Museum::Animal

    def initialize type

        case type
        when "cat"
           CatAnimal.new
        when "dog"
           DogAnimal.new
        end
    end
end 

Но Rails выдает мне ошибку: ожидаемый путь к файлу ../animal.rb для определения Animal

Файл находится в lib / museum / animal.rb

1 Ответ

2 голосов
/ 01 апреля 2011
module Barn
  # parent class
  class Animal
     def say
       'default'
     end
  end

  # inheritance for cat
  class Cat < Animal
    def say
      "meow"
    end
  end

  #inheritance for dog
  class Dog < Animal
  end

  # Factory to get by "type"
  def self.get type
    case type
    when :dog
      Dog.new
    when :cat
      Cat.new
    end 
  end 
end

и сохраните его как lib / barn.rb. Тогда вы можете сделать:

require 'barn'

c = Barn.get :cat
 => #<Barn::Cat:0x0000010719ffe8> 
c.say
 => "meow" 

d = Barn.get :dog
 => #<Barn::Dog:0x00000107190408> 
d.say
 => "default" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...