Last active
December 11, 2015 02:08
-
-
Save ageldama/4528250 to your computer and use it in GitHub Desktop.
rails example code snippets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -# -*- mode: haml; coding: utf-8; -*- | |
| !!! html | |
| %html | |
| %head | |
| %title= @page_title || '기업인' | |
| = stylesheet_link_tag "application" | |
| = javascript_include_tag "application" | |
| = csrf_meta_tags | |
| %meta{'http-equiv' => "Content-Type", 'content' => "text/html; charset=UTF-8"}/ | |
| %body | |
| .site_menu | |
| - if SessionHelper::signed_in? session then | |
| - member = SessionHelper::signed_member(session) | |
| %span.member_signature | |
| -# = render :partial => 'member_profile_photo/inline' | |
| %a{:href => profile_path(member.member_username)} | |
| %strong #{member.member_username} | |
| 회원님 세션 : | |
| %a{:href => url_for(:controller => 'member', :action => 'sign_out')} [로그아웃] | |
| %a{:href => url_for(:controller => 'member', :action => 'change_password')} [비밀번호 변경] | |
| %a{:href => edit_profile_path(member.member_username)} [프로필 변경] | |
| - else | |
| %a{:href => url_for(:controller => 'member', :action => 'sign_in')} [로그인] | |
| %a{:href => url_for(:controller => 'member', :action => 'sign_up')} [회원가입] | |
| %a{:href => url_for(:controller => 'member', :action => 'find_member_username')} [아이디 찾기] | |
| %a{:href => url_for(:controller => 'member', :action => 'find_password')} [비밀번호 찾기] | |
| = render :partial => 'shared/flash_area' | |
| = yield |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- coding: utf-8; mode: ruby; -*- | |
| class ApplicationController < ActionController::Base | |
| protect_from_forgery | |
| def validate_and_transact(form_id, form_klass, before_validation_cb=nil, &trx_blk) | |
| if params[form_id] then | |
| @form = form_klass.new(params[form_id]) | |
| if not before_validation_cb.nil? then | |
| self.send(before_validation_cb) | |
| end | |
| if @form.valid? then | |
| return trx_blk.call(@form) | |
| end | |
| else | |
| @form = form_klass.new | |
| end | |
| render | |
| end | |
| def member_login_auth | |
| # 요게 인증용 before-filter | |
| unless SessionHelper::signed_in? session then | |
| redirect_to "/", :alert => '로그인 후 이용해주세요.' and return | |
| end | |
| end | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require 'members/consts' | |
| class Member | |
| include MongoMapper::Document | |
| key :member_username, String, :required => true | |
| key :email, String, :require => true | |
| key :password, String, :required => false | |
| key :activated, Boolean, :default => false | |
| many :posts | |
| many :votes | |
| one :member_profile | |
| ensure_index [[:member_username, 1]], :unique => true | |
| ensure_index [[:email, 1]], :unique => true | |
| validates_presence_of :member_username, :email, :password | |
| validate :validate_unique_member_username | |
| validate :validate_unique_email | |
| def validate_unique_member_username | |
| unless MemberHelper::unique_member_username? @member_username then | |
| errors.add(:member_username, | |
| MemberModelConsts::MEMBER_USERNAME_ALREADY_REGISTERED_MSG) | |
| end | |
| end | |
| def validate_unique_email | |
| unless MemberHelper::unique_email? @email then | |
| errors.add(:email, MemberModelConsts::EMAIL_ALREADY_REGISTERED_MSG) | |
| end | |
| end | |
| timestamps! | |
| end | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- mode: ruby; coding: utf-8; -*- | |
| class MemberProfile | |
| include MongoMapper::Document | |
| plugin Joint | |
| belongs_to :member | |
| key :member_username, String | |
| # initial | |
| key :initiation, Boolean, :default => true | |
| # 회원 사진 | |
| attachment :photo | |
| # 회원 이름 (대표자 이름) | |
| key :real_name, String | |
| # 업태, 업종 | |
| key :business_section, String # 업종 | |
| key :business_type, String # 업태 | |
| # 개인, 법인 구분 | |
| INDIVIDUAL = 'individual' | |
| CORPORATE = 'corporate' | |
| key :enterpreneur_type, String | |
| # 사업체명 | |
| key :enterpreneur_name, String | |
| # 개업년월일 | |
| key :enterpreneur_starting_date, Date | |
| ## NOTE: 주민번호, 법인번호를 한 필드로 묶어버릴까... | |
| # 주민등록번호 | |
| key :individual_registration_no, String | |
| # 법인등록번호 | |
| key :corporate_registration_no, String | |
| # 사업자등록번호 | |
| key :enterpreneur_registration_no, String | |
| # 본점주소 | |
| key :centre_branch_post_code, String | |
| key :centre_branch_address1, String | |
| key :centre_branch_address2, String | |
| # 대표 전화번호 | |
| key :phone_no, String | |
| timestamps! | |
| end | |
| #MemberProfile.ensure_index [[:member_id, 1]], :unique => true | |
| MemberProfile.ensure_index [[:member_username, 1]]#, :unique => true | |
| MemberProfile.ensure_index [[:enterpreneur_registration_no, 1], | |
| [:individual_registration_no, 1], | |
| [:corporate_registration_no, 1]] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- coding: utf-8 -*- | |
| class MemberProfilePhotoController < ApplicationController | |
| before_filter :member_login_auth, :only => [:delete, :edit, :update] | |
| def delete | |
| member_username = params[:member_username] | |
| @member = Member.where(:member_username => member_username).first | |
| if @member.nil? then | |
| raise :invalid_member_username | |
| end | |
| if @member.member_username != member_username then | |
| raise :not_authorized_user | |
| end | |
| # | |
| if params[:sure].present? then | |
| mp = @member.member_profile | |
| mp.photo = nil | |
| mp.save | |
| # invalidate member-profile-photo-cache | |
| MemberProfilePhotoHelper.invalidate_member_photo(@member) | |
| # TODO: redirect? | |
| #render :text => %q|삭제하였습니다.| | |
| redirect_to edit_profile_photo_path(@member.member_username), :notice => '프로필 사진 삭제. 기본 프로필 사진을 사용합니다.' | |
| else | |
| render | |
| end | |
| end | |
| def edit | |
| member_username = params[:member_username] || params[:id] | |
| @member = Member.where(:member_username => member_username).first | |
| if @member.nil? then | |
| raise :invalid_member_username | |
| end | |
| if @member.member_username != member_username then | |
| raise :not_authorized_user | |
| end | |
| # | |
| render | |
| end | |
| def update | |
| member_username = params[:member_username] || params[:id] | |
| @member = Member.where(:member_username => member_username).first | |
| if @member.nil? then | |
| raise :invalid_member_username | |
| end | |
| if @member.member_username != member_username then | |
| raise :not_authorized_user | |
| end | |
| # | |
| mp = @member.member_profile | |
| mp.photo = params[:profile_photo_form][:photo] | |
| mp.save | |
| # | |
| redirect_to edit_profile_photo_path(@member.member_username), :notice => '프로필 사진 업데이트 완료!' | |
| end | |
| def show | |
| member_username = params[:member_username] || params[:id] | |
| @member = Member.where(:member_username => member_username).first | |
| if @member.nil? then | |
| raise :invalid_member_username | |
| end | |
| MemberProfilePhotoHelper.send_member_photo(self, @member) | |
| end | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- coding: utf-8; mode: ruby; -*- | |
| module PostCodeHelper | |
| def PostCodeHelper::parse_search_result(xml) | |
| require 'rexml/document' | |
| doc = REXML::Document.new xml | |
| path = 'post/itemlist/item' | |
| a = [] | |
| doc.elements.each(path) do |e| | |
| addr = e.elements['address'].text | |
| postcd = e.elements['postcd'].text | |
| a << {:address => addr, :postcd => postcd} | |
| end | |
| return a | |
| end | |
| def PostCodeHelper::search_via_openapi(region_name) | |
| require 'net/http' | |
| base_url = "http://biz.epost.go.kr/KpostPortal/openapied" | |
| regkey = "79134655fc4477bdc1325677351426" | |
| uri = URI(base_url) | |
| params = {:regkey => regkey, | |
| :target => 'post', | |
| :query => region_name.force_encoding('utf-8').encode('euc-kr')} | |
| uri.query = URI.encode_www_form(params) | |
| req = Net::HTTP::Get.new(uri.request_uri) | |
| req["Accept-language"] = "ko" | |
| res = Net::HTTP.start(uri.hostname, uri.port) do |http| | |
| http.request(req) | |
| end | |
| if res.is_a?(Net::HTTPSuccess) then | |
| body = res.body.force_encoding('cp949') | |
| begin | |
| return self.parse_search_result(body) | |
| rescue | |
| #Rails.logger.debug("POST-CODE XML PARSE FAIL!! (#{region_name})") | |
| return [] | |
| end | |
| else | |
| Rails.logger.warn("POST-CODE API SERVER FAIL!! (#{region_name}, #{res.code} -- #{res.msg})") | |
| return [] | |
| end | |
| end | |
| def PostCodeHelper::search(region_name) | |
| cache_key = "PostCodeHelper--#{region_name}" | |
| if Rails.cache.exist? cache_key then | |
| return Rails.cache.read(cache_key) | |
| else | |
| val = self.search_via_openapi(region_name) | |
| Rails.cache.write(cache_key, val, {:expire_in => 1.week}) | |
| return val | |
| end | |
| end | |
| def PostCodeHelper::split(post_code) | |
| if post_code.present? and post_code.index("-").nil? and post_code.length > 3 then | |
| return [post_code.slice(0..2), post_code.slice(3..-1)] | |
| end | |
| return [post_code] | |
| end | |
| def PostCodeHelper::format(post_code, j="-") | |
| PostCodeHelper::split(post_code).join(j) | |
| end | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -# -*- mode: haml; coding: utf-8; -*- | |
| - @page_title = "#{@member.member_username} 회원 프로필" | |
| -# TODO: 항목들 양식 좀 더 예쁘게? | |
| -# TODO: 로그인 && 자기꺼면 --> 프로필 수정 보이기? | |
| - member_profile = @member.member_profile | |
| %h1= @page_title | |
| %div | |
| %fieldset | |
| %legend #{@member.member_username} 회원 | |
| .field | |
| %label{:for => 'member_username'} 회원ID | |
| %span#member_username= @member.member_username | |
| = render :partial => 'member_profile_photo/inline', :locals => {:member_profile => member_profile} | |
| .field | |
| %label{:for => 'real_name'} 대표자 성명 | |
| %span#real_name= member_profile.real_name | |
| .field | |
| %label{:for => 'phone_no'} 대표 전화번호 | |
| %span#phone_no= member_profile.phone_no | |
| %fieldset | |
| %legend 업종, 업태 | |
| .field | |
| %label{:for => 'business_section'} 업종 | |
| %span#business_section | |
| %a{:href => "/category/show/#{member_profile.business_section}"} | |
| #{BusinessSectionHelper.name_of(member_profile.business_section)} | |
| .field | |
| %label{:for => 'business_type'} 업태 | |
| %span#business_type | |
| %a{:href => "/category/show/#{member_profile.business_section}/#{member_profile.business_type}"} | |
| #{BusinessTypeHelper.name_of(member_profile.business_section, member_profile.business_type)} | |
| %fieldset | |
| %legend 사업체 | |
| .field | |
| %label{:for => 'enterpreneur_name'} 사업체명 | |
| %span#enterpreneur_name #{member_profile.enterpreneur_name} | |
| .field | |
| %label{:for => 'enterpreneur_starting_date'} 개업년월일 | |
| %span#enterpreneur_starting_date #{member_profile.enterpreneur_starting_date} | |
| .field | |
| %label{:for => 'enterpreneur_type'} 개인/법인 구분 | |
| %span#enterpreneur_type | |
| - case member_profile.enterpreneur_type | |
| - when MemberProfile::INDIVIDUAL then | |
| 개인 | |
| - when MemberProfile::CORPORATE then | |
| 법인 | |
| - else | |
| ??? | |
| .field | |
| %label{:for => 'centre_branch'} 본점 주소 | |
| %span#centre_branch_addresses | |
| #{member_profile.centre_branch_address1} | |
| %br/ | |
| #{member_profile.centre_branch_address2} | |
| %span#centre_branch_post_code | |
| %br/ | |
| #{member_profile.centre_branch_post_code} | |
| - if SessionHelper::signed_and_same_user? session, member_profile.member_username then | |
| %a{:href => edit_profile_path(member_profile.member_username)} [수정] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment