Учитывая модель, как пройти через все свойства? - PullRequest
27 голосов
/ 26 октября 2010

Я хочу просмотреть все свойства моей пользовательской модели, как я могу это сделать?

Ответы [ 3 ]

52 голосов
/ 26 октября 2010

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

user.attributes.each_pair do |name, value|
  puts "#{name} = #{value}"
end

Если у вас нет конкретного экземпляра, тогда у класса есть методы, которые возвращают информацию о полях в базе данных, например, User.columns и User.content_columns. например,

User.columns.each do |column|
  puts column.name
end
1 голос
/ 26 октября 2010

@model.methods возвращает имена всех методов объекта.

@model.methods.grep (/ = $ /) вернет вам имена всех методов записи, так что вы можете догадаться, чтоесли у вас есть сеттер, то у вас также есть читатель, так что это может быть «свойство».

Вы также можете проверить хэш атрибутов (@ model.attributes), который является хэшем со всеми определенными столбцамив базе данных, и это может быть наиболее надежным способом, так как метод «методы» может не включать в себя средства чтения (и записи) атрибутов, генерируемые динамически.(Это может зависеть от версии RubyOnRails, которую вы используете).

1 голос
/ 26 октября 2010
Article.columns.each do |column|
  puts column.name
end

Это повторяет все объекты столбца для модели Article.

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