Да.
абсолютно возможно смешать их. Я делаю его на своем текущем проекте.
Моя конструкция SessionFactory выглядит примерно так:
_configuration = new Configuration();
_configuration.SetProperties(properties);
// hbm files
_configuration.AddAssembly(typeof(ISurveyTask).Assembly);
...
var persistenceModel = new PersistenceModel(...)
// fluent mappings
persistenceModel.addMappingsFromAssembly(typeof(ISurveyTask).Assembly);
persistenceModel.Configure(_configuration);
Обладают :-)
I would hesitate to override the attributes, and instead add to the model like this:
def titled_name
"#{title} #{name}"
end
However, you can access the fields directly like this:
def name
"#{title} #{self[:name]}"
end
Вы можете создавать виртуальные атрибуты в своей модели для представления этих структур.
Существует railscast по этой самой теме, но в целом вы можете сделать что-то подобное в ваша модель
def full_name
[first_name, last_name].join(' ')
end
def full_name=(name)
split = name.split(' ', 2)
self.first_name = split.first
self.last_name = split.last
end
Если вы хотите явно изменить значение атрибута при чтении или записи, вы можете использовать методы read_attribute или write_attribute. (Хотя я считаю, что они могут быть устаревшими.)
Они работают путем замены метода доступа атрибута вашим собственным. Например, поле идентификатора ветки может быть введено как xxxxxx или xx-xx-xx. Таким образом, вы можете изменить свой метод branch_identifier = для удаления дефисов, когда данные хранятся в базе данных. Этого можно достичь следующим образом
def branch_identifier=(value)
write_attribute(:branch_identifier, value.gsub(/-/, '')) unless value.blank?
end
Если вы обращаетесь к данным, хранящимся непосредственно в базе данных, вы можете сделать это в вашем представлении:
<%= @user.firstname %>
<%= @user.gender %>
и т. д.
Если вам нужно создать собственные представления данных, вам нужно будет либо создать помощников, либо расширить модель ( как указано выше).
Я обычно использую вспомогательные методы, добавленные в модель для таких вещей:
def formatted_name
"#{title} #{first_name} #{last_name}"
end
(Отредактируйте предыдущий пост. Оглянулся на мой код, и понял, что помощники должны быть для связанных с презентацией ( только разметка).
(Отредактируйте еще раз, чтобы удалить оставшийся параметр ... Блин, сегодня утром недостаточно кофе.)
(Отредактируйте еще раз, чтобы заменить $ на # ... Возможно, мне просто следует удалить это, а?)
Вы можете легко перегрузить атрибуты, как вы предлагаете.
т.е. если имя является полем в таблице базы данных пользователей, вы можете сделать:
def name
"#{title} #{read_attribute[:name]}"
end
Функция read_attribute
вернет значение столбца базы данных для поля.
Предостережение : Я не уверен, что это хорошая идея. Если вам нужен метод, который отображает данные модели в измененном виде, я бы хотел не перегружать методы по умолчанию и называть их иначе - это позволит избежать определенного уровня запутывания.
Документация здесь: http : //api.rubyonrails.org/classes/ActiveRecord/Base.html (в разделе «Перезапись средств доступа по умолчанию»)
в http://api.rubyonrails.org /classes/ActionController/Base.html[1235 visiblesearch for
Overwriting default accessors