检查Rails中是否存在关联的记录

时间:2013-04-28 11:48:17

标签: ruby-on-rails ruby-on-rails-3 postgresql

我的PostgreSQL数据库中有两个名为usersbusinesses的表。当用户登录并访问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"

2 个答案:

答案 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(商业)关系。