2013-12-15 2 views
0

서비스 및 서비스 북 모델이 있습니다. 현재 사용자가 서비스를 소유하고 있는지 여부를 확인하고 해당 사용자 서비스에 대해 만들어진 서비스 예약을 표시 할 수 있기를 원합니다.사용자가 서비스를 소유하고 있는지 확인하십시오.

나는 이것을 myservicebookings 페이지에 표시하려고합니다.

servicebookings_controller의 myservicebookings 작업입니다. 주석 처리 된 행에 있습니다. 현재 사용자가 만든 서비스 북의 소유자인지 또는 예약 된 서비스의 소유자인지 확인하려고하는데, 어떻게해야합니까? 이것에 대해 가겠습니까?

<h1>My Service bookings</h1> 

<table> 
    <tr> 
    <th><%= sortable "date" %></th> 
    <th><%= sortable "time" %></th> 
    <th><%= sortable "service name" %></th> 
    </tr> 
<% if @servicebookings.any? %> 

    <h4>Incoming requests:</h4> 

    <% @servicebookings.each do |servicebooking| %> 
    <tr> 
     <td><%= servicebooking.date %></td> 
     <td><%= servicebooking.time %></td> 
     <td><%= servicebooking.service_name %></td> 
     <td><%= link_to "View this booking", servicebooking_path(servicebooking) %></td> 
    </tr> 
    <% end %> 

    <h4>Outgoing requests:</h4> 

    <% @servicebookings.each do |servicebooking| %> 
    <tr> 
     <td><%= servicebooking.date %></td> 
     <td><%= servicebooking.time %></td> 
     <td><%= servicebooking.service_name %></td> 
     <td><%= link_to "View this booking", servicebooking_path(servicebooking) %></td> 
    </tr> 
    <% end %> 
</table> 
<%else%> 
<%= "You have no incoming or outgoing service booking requests"%> 
<%end%> 
<%= will_paginate @servicebookings %> 
<%= link_to "Homepage", :controller => "welcome", :action => "index" %> 

Servicebooking 모델 :

class Servicebooking < ActiveRecord::Base 
    attr_accessible :service_id, :date, :time, :user_id, :service_name, :accept_booking 
    belongs_to :user 
    belongs_to :service 

    def self.search(search) 
    if search 
    where('name LIKE ?', "%#{search}%") 
    else 
    scoped 
    end 
end 

def myservicebookings 
    @servicebookings = current_user.services.servicebooking.find(params[:user_id]) 
    @servicebookings = current_user.servicebookings.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page]) 
    end 

은 myservicebookings가 스피는 현재 사용자에 대한 서비스를 모두 수신/발신 요청을 표시하려고보고있다

서비스 모델 :

class Service < ActiveRecord::Base 
    attr_accessible :avatar, :avatar2, :avatar3, :avatar4, :name, :date_available, :time_available, :description, :price, :size, :company_name, :company_details 
    has_attached_file :avatar, :default_url => "/images/:style/missing.png" 
    has_attached_file :avatar2, :default_url => "/images/:style/missing.png" 
    has_attached_file :avatar3, :default_url => "/images/:style/missing.png" 
    has_attached_file :avatar4, :default_url => "/images/:style/missing.png" 
    belongs_to :user 
    belongs_to :event 
    has_many :comments, dependent: :destroy 
    has_many :servicebookings 


    def self.search(search) 
    if search 
    where('name LIKE ?', "%#{search}%") 
    else 
    scoped 
    end 
end 
end 

감사합니다. 도움을 주시면 감사하겠습니다.

+1

모델의 모습은 어떻습니까? 'User'와'Service' 사이에 관계가 있습니까? 예 : 사용자 has_many : 서비스? – Reboot

+0

컨트롤러가'@ servicebookings' 인스턴스 변수를 덮어 씁니다 – froderik

+0

예, 사용자 has_many : 양방향으로 서비스 관계가 있습니다. Rakesh, 감사합니다. – Joshua

답변

1

컨트롤러에서 이와 같은 작업을 수행 할 수 있습니다. ownerServiceBooking에 방법 Service이 블록을 일치하는 경우

def myservicebookings 
    @servicebookings = current_user.servicebookings.includes(:user).search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 5, :page => params[:page]) 

    owns_servicebooking = current_user.servicebookings.detect do |sb| 
     sb.user == current_user 
    end 
    owns_service = current_user.services.detect do |s| 
     s.user == current_user 
    end 
    @is_an_owner = owns_servicebooking and owns_service 
end 

detect 객체를 반환 있다는 것을 가정하고 루비이기 때문에 당신은 당신이 원하는 것을 얻을 수있는 부울 표현식에서 사용할 수 있습니다.

업데이트 : 위의 코드 예제에 컨트롤러 메서드가 추가되었습니다. 처럼보기 뭔가를 사용하려면 :

<% if @is_an_owner %> 
    <markup/> 
<% end %> 

나는이 사건에서 최고의 옵션이 아닙니다하지만 난 그렇지 않으면 제안하는 물건에 대해 충분히 알고하지 않는 것이 꽤 확신합니다. 그래도 시작할 수 있습니다. 이 부분을 모델 또는 도우미 메서드에 넣는 것이 좋습니다.

+0

안녕하세요 Froderik, 소유자가 없습니다. – Joshua

+0

답을 쓸 때 모델을 보지 못했습니다. 당신은 당신이 사용할 수있는'user' 메쏘드가있는 것 같습니다. 사용자는 항상 소유자입니까? – froderik

+0

안녕하세요 Froderik, 예. 서비스를 만드는 사용자가 없어도 서비스가 존재하지 않아 많은 서비스를 이용할 수 있으며 로그인 한 사용자의 서비스에 대한 예약 요청을 나열하고 싶습니다. – Joshua

관련 문제