Отдельный файл проверки для каждой модели в рельсах - PullRequest
0 голосов
/ 10 июня 2010

У меня слишком много моделей, и я хочу провести отдельную проверку и файлы отношений для каждой модели в рельсах. Есть ли способ сохранить его? с рельсами? Есть ли какое-то конкретное преимущество для этого?

1 Ответ

1 голос
/ 10 июня 2010

Ваш вопрос не ясен.Под «моделями» вы подразумеваете модели на основе базы данных, которые используют ActiveRecord, верно?

Обычно проверка не является «файлом», а представляет собой серию утверждений в файле модели.То же самое для объявлений отношений.

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

Проще всего иметь методы экземпляра в других файлах.Например,

# file foo.rb
class Foo < ActiveRecord::Base
  include FooMethods

  # --- callbacks --- #
  before_create :record_signup # "before_create" is a "callback".
  # See http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
  # note that the method could also be from a different class altogether:
  before_save      EncryptionWrapper.new
  # See section "Types of callbacks" in the api url referred to above

  # --- relationships --- #
  belongs_to :foobar
  has_many   :bars

  # --- Class Methods --- #
  def Foo.a_method_name(id)
    ...
  end
end

~~~~~~~~~~~~~~~~~~~~~~~~~~~

# file foo_methods.rb

module FooMethods

  def method1
    ...
  end

  def method2
   ...
  end

  private

  def record_signup # define the callback method
    self.signed_up_on = Date.today
  end
end

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

before_create

в файл, отличный от основного класса моделифайл.Не было бы трудно понять.Но независимо от того, насколько легко было бы поместить другой файл, я бы не рекомендовал его с точки зрения ясности кода.

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