Доступ к свойствам модели в направляющих

Да.

абсолютно возможно смешать их. Я делаю его на своем текущем проекте.

Моя конструкция 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);

Обладают :-)

6
задан Malik Daud Ahmad Khokhar 20 August 2009 в 10:08
поделиться

6 ответов

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
9
ответ дан 8 December 2019 в 18:39
поделиться

Вы можете создавать виртуальные атрибуты в своей модели для представления этих структур.

Существует 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
5
ответ дан 8 December 2019 в 18:39
поделиться

Если вы обращаетесь к данным, хранящимся непосредственно в базе данных, вы можете сделать это в вашем представлении:

<%= @user.firstname %>
<%= @user.gender %>

и т. д.

Если вам нужно создать собственные представления данных, вам нужно будет либо создать помощников, либо расширить модель ( как указано выше).

0
ответ дан 8 December 2019 в 18:39
поделиться

Я обычно использую вспомогательные методы, добавленные в модель для таких вещей:

def formatted_name
  "#{title} #{first_name} #{last_name}"
end

(Отредактируйте предыдущий пост. Оглянулся на мой код, и понял, что помощники должны быть для связанных с презентацией ( только разметка).

(Отредактируйте еще раз, чтобы удалить оставшийся параметр ... Блин, сегодня утром недостаточно кофе.)

(Отредактируйте еще раз, чтобы заменить $ на # ... Возможно, мне просто следует удалить это, а?)

0
ответ дан 8 December 2019 в 18:39
поделиться

Вы можете легко перегрузить атрибуты, как вы предлагаете.

т.е. если имя является полем в таблице базы данных пользователей, вы можете сделать:

def name
  "#{title} #{read_attribute[:name]}"
end

Функция read_attribute вернет значение столбца базы данных для поля.

Предостережение : Я не уверен, что это хорошая идея. Если вам нужен метод, который отображает данные модели в измененном виде, я бы хотел не перегружать методы по умолчанию и называть их иначе - это позволит избежать определенного уровня запутывания.

Документация здесь: http : //api.rubyonrails.org/classes/ActiveRecord/Base.html (в разделе «Перезапись средств доступа по умолчанию»)

0
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: