[Rails] Rails의 모델, controller 및attr_accessor 정보

7675 단어 RubyRails

입문


루비에서 attr_accessor는 클래스 밖에서 실례 변수를 읽고 쓸 수 있습니다.이를 바탕으로 Rails 모델에서 attr_우리는accessor 방법이 설명하는 변수의 운동과 주의하는 부분을 고려했다.(개인적인 견해인데 잘못된 부분을 지적하면 좋겠다)

카탈로그

  • 모델 클래스와 컨트롤러의 관계
  • attr_accessor 방법과 클래스 이외의 의미
  • attr_accessor에서 설명한 변수가 controller에서 어떤 작용을 하는지
  • 사이트 참조
  • 모델 클래스와 컨트롤러의 관계


    모델은 데이터베이스의 설계도와 같이 데이터베이스의 정보를 기록했다.Rails 컨트롤러는 모델에 정의된 클래스, 변수 및 메서드를 호출할 수 있습니다.
    예를 들어 보드 모델에boards 컨트롤러가 존재하는 경우
    ①board.rb(모델)
    
    class Board < ApplicationRecord
      belongs_to :user
      # belongs_to :admin
    end
    
    모델에는 Board 클래스가 있습니다.Board 클래스는 ApplicationRecord를 계승하여 ApplicationRecord에서 정의한 모든 방법을 사용할 수 있습니다.
    ②boards_controller.rb(컨트롤러)
    class BoardsController < ApplicationController
    (前略)
      def create
        board = Board.create(post_params)
      end
    (後略)
    end
    
    컨트롤러는 모델에 설명된 클래스'class Board'를 사용할 수 있습니다.보드 클래스는 프로그램 기록을 계승하기 때문에 프로그램 기록의 방법create를 호출할 수 있습니다.예를 들어 계승 응용 프로그램 기록을 사용하는create를 사용하여 파라미터(post_params)를 보드 변수에 저장합니다.이렇게 하면 Rails 컨트롤러는 모델의 클래스와 방법을 사용할 수 있습니다.

    attr_accessor 방법과 클래스 이외의 의미


    attr_accessor는 클래스 밖에서 클래스 실례 변수를 읽고 내보낼 수 있는 방법입니다.여기서 말하는'반 밖'은 어디까지입니까?예를 들어 다른 반에서도 읽고 쓸 수 있습니까?실제로 해 보았다.
    ①attr.rb 파일
    
    class Greeting
      attr_accessor :name  #を定義
    end
    
    class SuperGreeting
      def hi
      person = Greeting.new
      person.name = "Tom"        #「オブジェクト名.変数名 =」で代入
      puts person.name
      end
    end
    
    sayname = SuperGreeting.new
    sayname.hi
    
    Greeting 클래스의attr_accessor 방법에서 변수를 정의합니다:name.SuperGreeting 클래스의hi 방법으로 Greeting의 실례인person을 생성하고person의name 변수를'Tom'에 기록합니다.그게 사람이야.에서 설명한 대로 해당 매개변수의 값을 수정합니다.결과를 확인하기 위해 SuperGreeting의 실례인 Sayname를 생성하고hi방법을 실행해 보았습니다.
    ② 결과

    종착역attr.rb를 실행하려고 하면 Tom이 출력됩니다.이는attr_accessor 방법의'유외'는 다른 유내도'외'라는 뜻으로 읽고 쓸 수 있다.

    attr_accessor에서 설명한 변수가 controller에서 어떤 작용을 하는지


    위 내용을 바탕으로 Rails 모델에서 attr_우리는accessor에서 정의한 변수를 컨트롤러에서 읽을 수 있는지 고려했다.결론적으로 말하자면 가능하다.왜냐하면 ① 컨트롤러는 모델 클래스를 사용할 수 있고, ② attr_accessor 방법에 정의된 변수는 다른 클래스 (클래스 제외) 에서도 사용할 수 있기 때문이다.attr_accessor는 rails에서form 대상으로 다음과 같은 방법을 사용할 수 있습니다.(원본 모델 파일 생략)
    ①sdateboard.rb(모델)
    모델에서attr_accessor에서 정의:name,:comment,:date,:time.
    class SdateBoard
      include ActiveModel::Model
      include ActiveRecord::AttributeAssignment
      attr_accessor :name, :comment, :date, :time
    
      def save
        sy = Sdate.create(:date, :time)
        Board.create(name: name, comment: comment, sdate_id: sy.id)
      end
    
    end
    
    ②boards_controller.rb(컨트롤러)
    sdateboard.rb모델의 클래스 SdateBoard를 boards_로 설정controller.rb 컨트롤러의create 방법에서 사용합니다.( @sdate_schedule = SdateBoard.new(schedule_parmas)) 및 sdateboard.rb모델의attr_accessor에서 정의한 변수 ":name,:comment,:date,:time"는 컨트롤러 클래스 BoardsController의 schedule_파라미터 방법에서 사용합니다.(params.reuqire(:sdateboard).permit(:name, :comment, :date, :time))
    class BoardsController < ApplicationController
    (前略)
    def create
      @sdate_schedule = SdateBoard.new(schedule_params)
      @sdate_schedule.save
      redirect_to new_schedule_path
    end
    
    private
    
    def schedule_params
      params.require(:sdateboard).permit(:name, :comment, :date, :time)
    end
    (後略)
    end
    
    이상, 모델과 컨트롤러의 관계와attr_현재accessor에 정의된 변수의 이동을 볼 수 있습니다.

    웹 페이지 정보


    https://techacademy.jp/magazine/41659
    https://pikawaka.com/ruby/attr_reader
    http://pikawaka.com/ruby/attr_accessor

    좋은 웹페이지 즐겨찾기