Ну, я не знаю, полностью ли я ошибаюсь, но я действительно не могу найти очень практичный и прямой способ сделать что-то вроде этого:рельсы модель: has_many с собственными аргументами (НЕ ассоциация)
class User < ActiveRecord::Base
has_many :creations
end
но дело в том, что я просто хочу, чтобы пользователь, чтобы иметь много творений, если user.developer == истинный где user.developer просто логическое поле внутри таблицы Users.
Итак, любые идеи о том, как именно я могу это сделать непосредственно из модели?
Возобновление, когда пользователь не разработчик если вы пытаетесь получить User.first.creations, User.first.creations.new ... создать ... уничтожить, и т.д. вы получите NoMethodError, но если это разработчик, вы можете создать новое творение.
Единственный способ, которым я сумел сделать это расширяет модель и от проверки расширения, если proxy_owner.developer == истинного, но, делая это, я должен был переписать все такие действия, новые, создание, обновление, и т.д. ...
Любая помощь будет высоко ценится Спасибо большое
Это действительно способ сделать это. Классический пример поведения, который должен быть смоделирован в наследовании. Вам нужно будет быстро прочитать рельсы STI, чтобы узнать, как его настроить, это действительно очень просто. Затем вы можете делать такие вещи, как Developer.find_blah. – dalyons
Спасибо за это, я действительно сделал это, прежде чем придумать «отличную» идею использовать меньше моделей в своем приложении. Я думал, что нет необходимости иметь новую модель для этого, так как это очень простая вещь, поэтому я начал меня менять. Но, как я вижу, мне придется вернуться к этой идее. Но одно можно сказать наверняка, что это действительно интригано, так это тот факт, что нет «простого способа» сказать: «Хорошо, я просто хочу, чтобы эта модель имела _many: blas, если эта модель имеет этот атрибут», помимо создания новой модели. – zanona
Я пробовал это (http://pastebin.com/f3eb450a3) И он работал над первым вызовом, но после того, как он впервые создает приложение has_many: apps, он присоединяет его к классу, поэтому вы не можете его переопределить. Но, спасибо за вашу помощь, очень благодарен – zanona