我有Rails模型User
,ReadingList
和SessionReadingList
。用户有许多阅读列表。 SessionReadingList
是一种特殊类型的阅读列表,用于在用户注册之前存储在会话中。
在我的ReadingListsController
中,每个操作都采用以下形式:
def show
if current_user
#load user's reading lists
else
#load session reading list from session
end
end
我想知道我是否应该更好地继承ReadingListsController
,所以我有SessionReadingListsController
和UserReadingListsController
。我不知道如何处理路由。
那么,是否正在对解决方案进行子类化?如果是,我是否会根据ReadingListsController
从current_user
重定向?或者有更好的方法吗?
答案 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)