Ruby on Rails |Установка атрибутов - PullRequest
3 голосов
/ 11 февраля 2012

Существуют ли другие способы установки атрибутов для моделей в Rails, кроме использования attribute=?

Например, есть ли что-то вроде set_attribute(name, value)?

user = User.new
user.set_attribute(:name, 'Jack')
user.set_attribute(:surname, 'The Ripper')
user.save

# instead of
user.name = 'Jack'
user.surname = 'The Ripper'

Ответы [ 2 ]

3 голосов
/ 11 февраля 2012

глядя на источник AR, мы можем найти

# File activerecord/lib/active_record/persistence.rb, line 208
def update_attributes(attributes, options = {})
  # The following transaction covers any possible database side-effects of the
  # attributes assignment. For example, setting the IDs of a child collection.
  with_transaction_returning_status do
    self.assign_attributes(attributes, options)
    save
  end
end

, чтобы вы могли использовать assign_attributes(attributes, options) для установки атрибутов без сохранения

Также, если вы хотите установить атрибут по имени без непосредственного вызова метода, вы можете использовать user.send(:name=, 'Jack') вместо user.set_attribute(:name, 'Jack')

2 голосов
/ 11 февраля 2012

Существует метод write_attribute . Это должно быть то, что вы ищете.

EDIT

Вы можете использовать update_attributes , если хотите обновить сразу несколько атрибутов.

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