我的PostgreSQL数据库中有两个名为users
和businesses
的表。当用户登录并访问business/profile
时,我首先要检查他们是否实际创建了配置文件。如果没有,我想将它们重定向到business/create
。基本上,我需要做的是检查businesses
表是否包含与当前用户关联的记录。我已经尝试了一些我认为会起作用的东西,但不断收到以下错误:
Couldn't find User/Business without an id.
目前我的路线文件包含以下定义:
get "business/profile"
get "business/account"
get "business/create"
devise_for :users
get "home/index"
root :to => "home#index"
答案 0 :(得分:2)
在用户和商业模式之间建立关系
class User < ActiveRecord::Base
has_one :business
end
class Business < ActiveRecord::Base
belongs_to :user
end
在businees_controller.rb
中class BusinessController < ApplicationController
def profile
redirect_to business_create_path unless current_user.business
"your code"
end
def create
end
end
答案 1 :(得分:0)
我认为您使用的是Business.find_by_...()
方法,但如果找不到任何内容,则会出现404错误。
您应该以这种方式检查:
def profile
if current_user.businesses.count == 0
redirect_to business_create_path
else
# ...
end
end
我想你的模型中有一个User :: belongs_to(商业)关系。