Расширить model.ave метод Rails - PullRequest
1 голос
/ 21 июля 2011

Можно ли использовать метод .save некоторых моделей activeRecord и добавить в него функциональность?Я также хотел бы использовать некоторые атрибуты сохраняемого элемента в этой функции

Могу ли я сделать что-то вроде?

class Item < ActiveRecord::Base
    def self.save
        <added stuff for save>
        <including some_other_id_from_this_item>
    end
end

или это сломает вещи?И как мне получить доступ к this_item.the_column_i_need?

Ответы [ 2 ]

5 голосов
/ 21 июля 2011

Вы должны использовать Обратные вызовы ActiveRecords , чтобы расширить поведение сохранения.

С помощью ловушки before_save вы можете получить доступ к данным до сохранения записи, например, чтобы изменить регистр введенного вами письмаможет сделать что-то вроде

class User < ActiveRecord::Base
  before_save :downcase_email

  def downcase_email
    email.downcase!
  end
end
0 голосов
/ 21 июля 2011

используйте взамен aftet_save . доступ к любому столбцу только по имени атрибута , если вы читаете, и self.db_column_name , если вам нужно изменить его

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