Наследование и маршрутизация модели Rails - PullRequest
0 голосов
/ 27 сентября 2011
class User < ActiveRecord::Base
  has_many :queued_workouts, 
           :conditions => "queue_position IS NOT NULL",
           :order => "queue_position ASC"

  has_many :workouts
end

class Workout < ActiveRecord::Base
end

class QueuedWorkout < Workout
  # Have to give this its own class because acts_as_list always updates the
  # queue_position when operating on user.workouts
  acts_as_list :column => :queue_position, :scope => :user
end

У меня есть маршруты для тренировок, но они не нужны для QueuedWorkouts.Время от времени я сталкиваюсь с случаем, когда я передаю QueuedWorkout вместо Workout в url_for.В моем конкретном случае это происходит в WorkoutObserver.

Сейчас я делаю

class WorkoutObserver < ActiveRecord::Observer
  def after_update(workout)
    workout = Workout.find(workout.id) if workout.is_a? QueuedWorkout
    twitter_status = "some stuff " + short_url_for(workout)  # Helper method for generating urls outside controllers & views
    ....
  end
end

, что, конечно, является ужасным решением.Есть ли лучший способ сообщить маршрутизатору Rails генерировать URL-адреса тренировок для QueuedWorkouts?

1 Ответ

0 голосов
/ 27 сентября 2011

Вы можете сделать:

resources :queued_workout, :controller => "workout"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...