2014-02-26 2 views
0

레일 4 애플리케이션에서 스캐 폴드에 의해 생성 된 모델을 구성하는 데 문제가 있습니다. 당신이 볼 수 있듯이 그들은이 사이트에 등록 할 때레일에서 스캐 폴드 생성기의 경로를 구성하는 방법

class Contact < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_one :contact 

    after_create :make_contact 
    def make_contact 
     create_contact(
     :country => "USA", 
     :city => "Newyork" 
    ) 
    end 
end 

, 나는 각 사용자에 대한 프로필 모델 인스턴스를 만드는거야 :

이들은

내 모델입니다.

Devise GEM으로 User 모델을 생성하고 rails scaffold generator로 Contact 모델을 생성했습니다.

1) 내 사용자 만 프로필을 업데이트하거나 볼 수 있기를 바랍니다. 나는 그 (것)들이 모든 단면도를 목록으로 만들고, 그들의 단면도를 파괴하거나 새로운 단면도를 창조하는 것을 막고 싶다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

2) 방문/연락 경로를 이용할 때 내 응용 프로그램이 사용자 관련 프로필 페이지로 자동으로 리디렉션되도록하고 싶습니다.

3) 사용자가 URL을 변경하여 다른 사용자 프로파일을 볼 수 없습니다와 같은/연락처/1, 연락처/2 등

내가 어떻게 할 수 있습니까?

감사합니다. 당신은 당신이

resources :users, :only => [:new, :create, :edit, :update, :show] #index and destroy are not in the list 

을 원하는 경우에만 작업을 지정할 수 있습니다

당신의 경로에서
def UsersController < ApplicationController 
before_filter :restrict_user, :only => [:show, :edit, :update] 

private 
def restrict_user 
    redirect_to :root, :alert => "Not authorized" unless params[:id] = current_user.id 
end 
end 

, 컨트롤러에

+0

연락처 컨트롤러에서 동일한을 수행 할 수있는 당신을 묻는 것은 왜 당신이 Devise를 사용해야하는지입니다. – wurde

답변

1

사용자 before_filter/before_action 너무

+0

고마워요! 그것은 위대한 일을하고 있습니다. – msdundar

+0

옳은 대답으로 선택하십시오 – usha

관련 문제