Клонирование атрибутов одного объекта другому - PullRequest
1 голос
/ 08 июня 2009

У меня есть две модели Content и ContentType. Каждый Контент (класс, а не объект) имеет свой связанный ContentType, и ContentType в основном содержит некоторые атрибуты, которые можно установить с помощью онлайн-формы, которые затем можно использовать в представлениях, чтобы показать / скрыть некоторые атрибуты объектов контента.

После создания нового объекта Content (например: @c = Content.new) я мог бы получить связанный ContentType, используя:

Содержание класса def content_type @content_type || = ContentType.find_by_name (self.class.to_s) конец конец

Затем я мог бы запросить атрибуты ContentType с помощью @ c.content_type.xxx, но есть ли какой-либо способ прямого доступа к атрибутам ContentType, как будто они являются атрибутами @c без использования параметра method_missing. В основном вместо того, чтобы делать @ c.content_type.has_title? Я хотел бы спросить @ c.has_title ?. Есть ли способ клонировать атрибуты ContentType на @c?

Заранее спасибо.

1 Ответ

1 голос
/ 08 июня 2009

Вы можете использовать метод делегата

has_one :user
delegate :name, :name=, :email, :email=, :to => :user 

Это, по крайней мере, несколько лучше, поскольку ContentType может быть скрыт.

Также вы можете передать опцию :allow_nil => true, которая избавит вас от надоедливых ошибок "Cant call nil.xxx", если ContentType также может быть nil.

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