rails конструктор "def initialize" с атрибутами: правильный путь для передачи в модель - PullRequest
4 голосов
/ 12 марта 2012

Привет, у меня есть модель под названием «Листинг».Вот конструктор для модели:

def initialize(business)
    puts 'inside Listing.initialize'

    @name = business.name
    @telephone = business.telephone


    puts 'Created a new Listing'
end

У меня есть контроллер с именем "lists_controller". У меня есть еще одна модель с именем "Business".Внутри «list_controller» у меня есть метод, в котором я хотел бы создать экземпляр «Listing» с атрибутами «Business».

Вот код, который делает это в «lists_controller»

def create_listings

    self.get_all  
    @businesses.each do |business|
     Listing.create(business)

    end

end


def show

   self.create_listings
   @listings = Listing.all

   respond_to do |format|
   format.html #show.html.erb
   end

end

Этот метод инициализации не работает. Я получаю это исключение:

wrong number of arguments (2 for 1)

Rails.root: / Пользователи / AM / Документы / RailsWS / cmdLineWS / Бизнесы

Трассировка приложения|Framework Trace |Приложение Full Trace app / models / list.rb: 53: в initialize' app/controllers/listings_controller.rb:18:in в app / controllers / lists_controller.rb: 17: in each' app/controllers/listings_controller.rb:17:in app / controllers / lists_controller.rb: 26: в `show '

Как я могу это исправить?Спасибо

1 Ответ

4 голосов
/ 12 марта 2012

Вы можете попробовать (псевдокод / ​​не проверено):

def initialize(business)
    puts 'inside Listing.initialize'

    @attributes.merge(business.attributes)

    puts 'Created a new Listing'

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...