这里最好的方法是什么?我正在尝试清理一些代码,我想知道控制器是否是这种逻辑的最佳位置:
if user_signed_in?
if current_user.try(:admin?)
@docs = Doc.chronologic.page(params[:page]).per(5)
@orders = Order.chronologic.page(params[:page]).per(5)
else
@docs = Doc.chronologic.where(:user_id => current_user.ftp, :retired => "active").page(params[:page]).per(5)
@orders = Order.chronologic.where(:user => current_user.ftp).page(params[:page]).per(5)
end
respond_to do |format|
format.html
format.json { render json: @docs }
end
else
redirect_to new_user_session_path
end
如果有更好的位置,它会在哪里?
谢谢!
编辑:对于像pdf
这样的方法来说,情况要糟糕得多,这些方法对Prawn有一行一行的指示,但我似乎无法让send_data
从模型。
答案 0 :(得分:2)
这基本上是穆说的,但这是我的看法。
在您的app控制器中:
def require_logged_in
redirect_to new_user_session_path unless user_signed_in?
end
在您的控制器中
before_filter :require_logged_in
def some_action
@docs = Doc.chronologic.for_user(current_user).page(params[:page]).per(5)
@orders = Order.chronologic.for_user(current_user).page(params[:page]).per(5)
respond_to do |format|
format.html
format.json { render json: @docs }
end
end
在你的Doc模型中
scope :for_user, lambda do |user|
where(:user_id => user.ftp, :retired => "active") unless user.admin?
end
您的订单模型中有类似内容。
根据您的编辑,绝对不要从您的模型中send_data
。