У меня есть класс, который содержит этот метод класса:Ruby: Можно ли использовать методы экземпляра внутри метода класса?
def self.get_event_record(row, participant)
event = Event.where(
:participant_id => participant.id,
:event_type_code => row[:event_type],
:event_start_date => self.format_date(row[:event_start_date])
).first
event = Event.new(
:participant_id => participant.id,
:event_type_code => row[:event_type],
:event_start_date => self.format_date(row[:event_start_date])
) if event.blank?
event
end
И у меня есть, в том же классе, метод экземпляра:
def format_date(date)
parsed_date = date.split('/')
# if month or day are single digit, make them double digit with a leading zero
if parsed_date[0].split("").size == 1
parsed_date[0].insert(0, '0')
end
if parsed_date[1].split("").size == 1
parsed_date[1].insert(0, '0')
end
parsed_date[2].insert(0, '20')
formatted_date = parsed_date.rotate(-1).join("-")
formatted_date
end
Я получаю «неопределенный метод» ошибка для #format_date
. (Сначала я попробовал это без self
). Не можете ли вы использовать методы экземпляра в методах класса того же класса?
Почему метод 'format_date' является экземпляром? Он не использует ничего из экземпляра. – tdgs
Конечно, вы не можете. Для вызова метода экземпляра вам нужен экземпляр вашего класса. –
@tdgs Хорошая точка. Я сделал это методом экземпляра, потому что я думал, что создание метода класса подразумевает, что оно предназначено для публичного использования, когда дело касается только внутреннего использования. –