У меня есть метод класса Ruby, и я хочу использовать закрытый метод объекта этого класса, но Rails вызывает ошибку.Invoke private method из класса
Конкретный контекст: у меня есть модель класса Team. I определено
def self.to_csv(**options)
# blah blah blah
teams = self.all
teams.each do |team|
csv_row = team.export_as_csv_row #a private method
# and it failed here
end
end
Я использую Ruby 2.2.1 и Rails 4.2. Если я не могу этого сделать, если есть способ защитить export_as_csv_row
от других классов, видящих это?
Вы можете использовать 'send', но ... возможно, было бы лучше сделать этот метод общедоступным, поскольку он, по-видимому, предназначен для того, чтобы не быть приватным. –
Я новичок в Ruby, но не является частным методом, доступным для этого класса? или частные, просто доступные только для того же типа? –
@JunchaoGu частные методы не могут быть вызваны с явным приемником, как вы делаете вызов 'team.export_as_csv_row', где' команда' является явным получателем. Есть тонна больших объяснений, что означает «частный» в рубине. [Вот только одна такая статья] (http://devblog.orgsync.com/2013/05/20/private-and-protected-they-might-not-mean-what-you-think-they-mean/) – engineersmnky