2016-02-28 4 views
0

Я инициализация нового объекта и установки атрибутов (потому что нет никаких признаков для данного конкретного объекта) перед визуализацией формы следующим образом:Создайте метод, чтобы установить атрибуты после инициализации объекта

def new 
    Book.new title: nil, author: nil, genre: nil, language: nil, ect... 
end 

Этого для меня похож на запах кода.

Я пытаюсь установить атрибуты в методе внутри модели, чтобы увеличить читаемость с помощью: Book.new.set_attributes. Так что мой set_attributes метод в модели Книги будет выглядеть следующим образом:

def set_attributes 
    {posted: nil, company: nil, poster: nil, city: nil, state: nil, title: nil, body: nil, keywords: nil} 
end 

Однако это не работает (с или без {} скобок). Можно ли вызвать метод после использования .new?

+0

Вы попали в хорошее место с этим? – jvillian

ответ

2

Метод конструктора Ruby - initialize, а не new. Не следует пытаться определить метод с именем new. Сделайте что-то вроде:

class Book 
    attr_accessor :title, :author 
    def initialize(title = nil, author = nil) 
    @title = title 
    @author = author 
    end 
end 
0

Вам не нужно инициализировать значения nil. При вызове Book.new любые значения, которые не указаны в хеше (например, Book.new (название: «Bozo», автор: «Clown»)) будут автоматически отсутствовать.

Смежные вопросы