Я не совсем уверен, что вы пытаетесь сделать, но я чувствую, что вы путаете переменные экземпляра класса и переменные экземпляра экземпляра.Если вы прямо напишите @...
в теле класса, это будет первое, если вы напишите @...
в определении метода экземпляра, это будет последнее.Кажется, вы просто хотите последнее.Следующее, вероятно, то, что вы хотите.Здесь я устанавливаю solr_domain
и title
как получатели, поэтому в некотором внешнем классе A
для некоторого экземпляра Book
b
вы можете сделать b.solr_domain
или b.title
, чтобы получить их.В пределах Book
вам не нужно обращаться к переменным через геттеры.Прямой доступ к ним по их именам @...
менее запутан и, следовательно, скорее всего уменьшит количество ошибок.
class Book
require 'rsolr'
attr_reader :solr_domain, :title
def initialize(isbn)
set_solr_domain("http://solr.com:9003/solr")
@isbn = isbn
@title = set_title
end
def set_solr_domain(newurl)
@solr_domain = newurl
@solr = RSolr.connect(:url => @solr_domain)
end
def set_title
@solr.get('select', :params => {:q => "isbn:(#@isbn)"})["response"]["docs"][0]["title"]
end
end