Доступ к атрибутам «связанной» модели из первого - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть приложение rails, в котором есть несколько моделей. Одна конкретная модель является «фокусом» приложения, и в ней определено несколько отношений «один ко многим» и «несколько ко многим ко многим».

Я создал логику для экспорта полей в файл CSV, и в рамках модели я определил пару методов, которые кто-то показал мне, чтобы облегчить это. Вот два метода:

  def self.csv_header 
    fields = attr_order.*.to_s & content_columns.*.name 
    fields -= %w{created_at updated_at created_on updated_on deleted_at} 
    fields.reject! { |f| never_show? f } 
    fields 
  end 

  def to_csv 
    self.class.csv_header.map { |h| send(h) } 
  end

Однако в моей основной модели (называемой пациентом) мне нужно включить поля некоторых других моделей «один ко многим» (например, home_address, который содержит улицу, город, штат, почтовый индекс и т. Д.). Можно ли сохранить модель пациента внутри? Я установил логику в своем контроллере, которая может добавлять информацию о другой модели, но кажется, что было бы намного чище позволить модели пациента получить всю дополнительную информацию, которая ей нужна от других моделей, и добавить ее в строки экспорта.

1 Ответ

0 голосов
/ 01 сентября 2011

Большая часть вашей работы должна быть сделана в моделях в любом случае, на мой взгляд.Держите контроллеры тонкими, а модели полными, а не наоборот.

Если вам нужно получить доступ к некоторым атрибутам - скажем, Patient имеет отношение 1-к-1 с Address, тогда почувствуйтебесплатно сделать это!Просто сделайте что-то вроде данных, например:

fields += HomeAddress.csv_header

home_address.rb

def self.csv_header
    ... pretty much the same thing as Patient.csv_header
end

Итак, вы не сохраняете данные в модели пациента,скорее вы храните данные там, где они принадлежат, и просто получаете к ним доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...