我想知道是否有人可以给我一些关于最佳下一步的指导,因为我还在学习轨道。基本上,我有一个网站,允许用户注册,登录,注销和编辑他们的个人资料。我通过设计进行身份验证。我为网站所有者而非公众提供了一个管理区域。我选择这样做,因为它是一个电子商务网站,我希望用户部分更加自定义。我现在想要创建以下页面的页面。
用户查看订单历史记录的状态页 优惠券兑换的奖励页面, 一个页面,供用户查看他们当前注册的子订单。
我已经在下方添加了我的用户代码,但是如果有人可以给我一些帮助来接近这一点,那将是非常感激的,因为我无法理解我最好的下一步!
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100#" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :name, presence: true
has_many :listings, dependent: :destroy
# # a listings existence depends on the existence of the user that created it
# has_many :sales, class_name: "Order", foreign_key: "seller_id"
has_many :purchases, class_name: "Order", foreign_key: "buyer_id"
答案 0 :(得分:1)
<强>设计强>
由于你正在使用Devise(伟大的宝石),让我给你一些有关它如何工作的信息。
Devise是一个authentication系统 - 意味着它可以处理应用的注册,登录和会话维护。具体来说,在使用Devise时,它将仅用作管理访问到您的应用的方式。 IE不担心Devise
你会找到great resource on Devise / Authentication here:
<强>功能强>
根据您的问题,系统的功能应包含在管理区域中。创建它实际上相对简单(所有由Devise完成的繁重工作):
#config/routes.rb
namespace :admin do
root: "application#dash"
resources :orders
resources :products
end
root: "products#index"
resources :products, only: [:index, :show]
这将使您能够使用以下代码:
#app/controllers/products_controller.rb
class ProductsController < ApplicationController
#No authentication required
def index
@products = Product.all
end
def show
@product = Product.find params[:id]
end
end
请注意,上述控制器没有任何身份验证?它只是用来让您能够向用户展示产品/产品。这是“前端”,可以用于从“产品”到“页面”等的所有内容
您正在寻找的功能位于“后端” - “管理员”区域。我们使用:admin
namespace来实现这一目标,它基本上为我们提供了一个文件夹,我们的管理员为中心的控制器将存在:
#app/controllers/admin/application_controller.rb
class Admin::ApplicationController < ActionController::Base
before_action :authenticate_user!
def dash
#stuff here
end
end
#app/controllers/admin/products_controller.rb
class Admin::ProductsController < Admin::ApplicationController
....
end
这样做的好处是admin
命名空间表面上是“自包含的”(admin/application_controller
管理身份验证,子控制器继承它)。
除此之外,这应该为您提供一个稳定的平台,以便向前推进。
-
<强>资源强>
以下是一些很好的资源: