2016-04-13 4 views
0

У меня есть отношение role_to в моей модели пациента, тогда мне нужно создать attr_accessor для чтения state_id из города, указанного в объекте Patient.Использовать attr_accessor, чтобы вернуть значение поля навигации

Как это сделать?

Если я просто использую attr_accessor: state_id, я должен установить его в инициализации класса, и значение будет статическим. Мне нужно, чтобы он был доступен только для чтения и автоматически обновлялся в соответствии с текущим значением свойства City navigation.

ответ

0

Вам не нужен attr_accessor, вам просто нужен способ.

class Patient 

    def state_id 
    city.state_id 
    end 

end 

Если город объединение не является обязательным Вы можете обрабатывать возможность города бытийного нолю ...

class Patient 

    def state_id 
    city.try(:state_id) 
    end 

end 
0

Если вы хотите, чтобы ваш API для Patient объекта искать что-то вроде @patient.state_id, то либо SteveTurczyn's answer, либо delegation может работать на вас, чтобы прочитать state_id из города, указанного в объекте Пациент:

class Patient 
    # you can remove `allow_nil` if the patient will *always* have a city 
    delegate :state_id, to: :city, allow_nil: true 
end 
Смежные вопросы