这是继承的案例吗?

时间:2011-08-26 15:40:35

标签: ruby-on-rails-3 controller

我有Rails模型UserReadingListSessionReadingList。用户有许多阅读列表。 SessionReadingList是一种特殊类型的阅读列表,用于在用户注册之前存储在会话中。

在我的ReadingListsController中,每个操作都采用以下形式:

def show
  if current_user
    #load user's reading lists
  else
    #load session reading list from session
  end
end

我想知道我是否应该更好地继承ReadingListsController,所以我有SessionReadingListsControllerUserReadingListsController。我不知道如何处理路由。

那么,是否正在对解决方案进行子类化?如果是,我是否会根据ReadingListsControllercurrent_user重定向?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建使用适当控制器的自定义路径匹配器。

class LoggedInConstraint < Struct.new(:value)
  def matches?(request)
    request.cookies.key?("user_token") == value
  end
end

match 'reading-list' :to => "reading_list#index", :constraints => LoggedInConstraint.new(true)
match 'reading-list' :to => "session_reading_list#index", :constraints => LoggedInConstraint.new(true)