Какие методы становятся доступными после создания ассоциации? - PullRequest
1 голос
/ 02 марта 2009

Я только начинаю работать с RoR, так что я уверен, что это довольно просто. Допустим, у меня есть две модели: аккаунт и транзакция

class Account < ActiveRecord::Base
    has_many :transactions
end

class Transaction < ActiveRecord::Base
    belongs_to :account
end

Какие методы (для каждой модели) становятся доступными / генерируются автоматически после создания этой ассоциации?

Спасибо

Ответы [ 3 ]

1 голос
/ 03 марта 2009

запустите скрипт / консоль из корня вашего приложения rails, а затем вы можете изучить все методы магической модели, например:

> account = Account.new  
> account.methods
> ...[long list of methods]...
> transaction = Transaction.new  
> transaction.methods
> ...[long list of methods]...

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

1 голос
/ 02 марта 2009

Это зависит. Некоторые методы (например, учетные записи # транзакции, транзакции # учетная запись) будут там с самого начала. Другие будут созданы по мере необходимости (через ловушку method_missing), такие как динамические искатели. Точный список может зависеть от других факторов, в том числе от таких вещей, как Act_AS и т. Д., Используемых в других местах.

Вас беспокоит, какие из них созданы или каковы полные возможности?

- MarkusQ

P.S. Подробнее смотрите здесь:

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

0 голосов
/ 19 мая 2009

ответ на вопрос: вы можете вывести что-то подобное на ваш взгляд, чтобы оно было отформатировано:

@transaction.methods.each do | method | Метод + "
" конец

Я использую HAML, поэтому синтаксис немного другой, но просто посмотрите "do"

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