2016-04-16 9 views
-1

私はレール上でRubyを使い始めました。ビルドしているアプリケーションの要件は次のとおりです。 "その地理的エリアの営業担当者は内部ポータルを使用してリクエストをレビューし、そのリクエストを適格段階にあるものとしてマークします。"ruby​​ on railsログインしている従業員と同じ状態にある従業員ディスプレイの顧客のページを表示

基本的に私は従業員ショーページに、ログインしている従業員と同じ状態に属しています。たとえば、ニューヨークの従業員は、ニューヨークからの新規顧客をすべて見ることができます。したがって、ログインしている従業員の地理的な場所にいる顧客のみを表示する必要があります。ログインすると、従業員が自分のショーページにリダイレクトされます。ここで、顧客名を表示します。 私のショーページのコードです。 私は顧客要求を持っています。これは、従業員と同じ州の顧客を記載する必要があります。私が試した:ここ

<%= @customer.state_id %> but this does not work. 

は私のショーのページのコードはこれらなしで、スキーマとモデルを投稿してください

<p id="notice"><%= notice %></p> 

    <p> 
    <strong>First name:</strong> 
    <%= @employee.first_name %> 
    </p> 

    <p> 
    <strong>Last name:</strong> 
    <%= @employee.last_name %> 
    </p> 

     <p> 
     <strong>City:</strong> 
     <%= @employee.city %> 
      </p> 

      <p> 
     <strong>State:</strong> 
     <%= @employee.state.state %> 
     </p> 

     <p> 
     <strong>Role:</strong> 
     <%= @employee.role.role %> 
     </p> 

     <p> 
     <strong>Manager:</strong> 
     <%= @employee.manager_name %> 
     </p> 

     <p> 
     <strong>Customer Requests:</strong> 
     </p> 
     <%= link_to 'Edit', edit_employee_path(@employee) %> | 
     <%= link_to 'Back', employees_path %> 
+0

「...しかしこれは機能しません」とはどういう意味ですか?それはどうしたらいいのですか?状態の名前ではなく、状態のIDを表示するだけですか? – MarsAtomic

答えて

0

を下回っている、それは推測するのは難しいです。

基本的に、スキーマにはユーザー、アドレス、ロールの表が必要です。あなたのケースでは、従業員と顧客はどちらもユーザーですが、ユーザー名、パスワードなどのフィールドを共有します。したがって、それらを1つのテーブルにまとめて、フィールドコールタイプを追加して区別することができます。ユーザーテーブルを継承するEmployeeクラスとCustomerクラスを作成します。ユーザテーブルは整数フィールドaddress_idを持ち、アドレステーブルは整数フィールドstate_idを持つ必要があります。

user.rbはこれを持っている必要があります。

class User < ActiveRecord::Base 
    has_many :addresses 
    ... 
end 

customer.rb

class Customer < User 
.... 
end 

address.rb

class Address < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :state 
... 
end 

state.rb

class State < ActiveRecord::Base 
    has_many :addresses 
    .... 
end 

これで、次のように呼び出すことができます。 @customer.addresses.first.state_id or @customer.addresses.first.state.name

従業員に同じことをします。

現在の顧客と同じ状態の従業員を検索する場合。

@current_state_id = @customer.addresses.first.state_id (#or state_id of default address) 

@employees = Employee.joins(:addresses).where("addresses.state_id = ?", @current_state_id) 
関連する問題