Как вы запускаете блок "do" в модели Rails, все еще перечисляя: зависимый? - PullRequest
2 голосов
/ 12 ноября 2008

Итак, у меня есть модель User, которая: has_many других моделей, таких как документы, видео, сообщения и тому подобное. Мой вопрос возникает, когда я выполняю блок "do" из модели User следующим образом:

has_many :posts do
    def recent
      find(:all, :order => 'created_at desc', :limit => 12)
    end
  end

Это позволяет мне вызывать что-то вроде user.posts.recent, чтобы найти только те сообщения, которые связаны с пользователем. Имея это в виду, как я могу все еще добавить: зависимый =>: уничтожить или: зависимый =>: delete_all к этой ассоциации? Все, что я до сих пор пробовал, допустило ошибку.

Ответы [ 2 ]

3 голосов
/ 12 ноября 2008

Похоже, вы должны взглянуть на named_scope .

Нет причин, по которым вы должны иметь блокировку do против вашей ассоциации.

Вы должны превратить этот недавний метод в именованную область видимости, и затем вы можете добавить: зависимый => уничтожить и т. Д. И т. Д.

Удачи!

0 голосов
/ 12 ноября 2008

Это должно работать просто отлично AFAIK:

has_many :posts, :dependent => :destroy do
    def recent
      find(:all, :order => 'created_at desc', :limit => 12)
    end
  end
...