문제

"참고"열을 포함한 새 테이블을 만들었습니다. 기본값은 Varchar (255)라고 생각하지만이 열을 텍스트 영역과 필드로 만들고 더 많은 데이터를 허용하고 싶습니다. ActivereCord :: 마이그레이션 파일에서 이러한 변경을 할 것이라고 생각하지만 형식에 대해 궁금합니다. 예를 들어 Varchar (255)를 Varchar (1000)로 간단히 변경합니까? (그렇다면 형식은 무엇입니까?

def self.up
    create_table :notes do |t|
      t.string :note :varchar(1000)
    end

그게 올바른 형식인가요? 또한 입력 필드를 여러 행으로 만드는 방법은 어떻게해야합니까? 이것이 쉬운 일이라면 죄송하지만 프로그래밍과 ROR에 익숙하지 않습니다. 감사.

도움이 되었습니까?

해결책

'문자열'대신 '텍스트'유형을 사용하면 간단히 사용할 수 있습니다.

def self.up
  create_table :notes do |t|
    t.text :note
  end
end

'텍스트'유형을 사용하면 텍스트 유형의 데이터베이스 열이 발생합니다. Varchar는 일반적으로 최대 길이 255로 제한됩니다 (MySQL에서 다른 RDBMS는 유사한 한계가 있습니다).

Rails 양식 도우미를 사용하는 경우 a Textarea 이 필드에 대한 출력이됩니다 ( '텍스트'유형이기 때문에). Textarea 멀티 라인 입력을 허용하는 양식 요소입니다.

편집 : create_table을 이미 마이그레이션 한 경우 열 유형을 변경하기 위해 새 마이그레이션을 만들 수 있습니다.

def self.up
  change_column :notes, :note, :text
end

다른 팁

올바른 형식이 될 것입니다

t.string :note, :limit => 1000

256 자 이상의 Varchars를 지원하는 MySQL (또는 데이터베이스) 버전을 사용하고 있는지 확인하십시오.

큰 텍스트 블록을 사용하려면

t.text :note

보다 http://api.rubyonrails.org/classes/activerecord/connectionadapters/tabledefinition.html 자세한 내용은

한계 옵션으로 길이를 변경할 수 있습니다.

def self.up
  change_column :notes, :note, :string, :limit => 1000
end

이미 저장된 데이터가 많았 기 때문에 사용했습니다.

self.up
  change_column :notes, :note, :text, :limit => nil
end

다음을 중단하면 : limit => nil 옵션을 중단하면 열 유형이 varchar에서 텍스트로 변경되지만 여전히 최대 255 자의 문자였습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top