수색…


레일 콘솔을 사용하여 테이블로 재생하기


표보기

ActiveRecord::Base.connection.tables

테이블을 삭제하십시오 .

    ActiveRecord::Base.connection.drop_table("users")
    ------------OR----------------------
    ActiveRecord::Migration.drop_table(:users)
    ------------OR---------------------
    ActiveRecord::Base.connection.execute("drop table users")

기존 열에서 색인 제거

 ActiveRecord::Migration.remove_index(:users, :name => 'index_users_on_country')

여기서 countryusers 파일에 이미 색인 추가 된 마이그레이션 파일의 열 이름입니다.

 t.string :country,add_index: true

외래 키 제약 조건 제거

ActiveRecord::Base.connection.remove_foreign_key('food_items', 'menus')

여기서 menus has_many food_items 와 각각의 마이그레이션을 나타냅니다.

열 추가

ActiveRecord::Migration.remove_column :table_name, :column_name

예 : -

 ActiveRecord::Migration.add_column :profiles, :profile_likes, :integer, :default => 0

레일스 메소드 - 부울 값 반환

Rails 모델의 모든 메소드는 부울 값을 반환 할 수 있습니다.

간단한 방법 -

  ##this method return ActiveRecord::Relation
  def check_if_user_profile_is_complete
    User.includes( :profile_pictures,:address,:contact_detail).where("user.id = ?",self)
  end

부울 값을 리턴하는 다시 간단한 메소드 -

  ##this method return Boolean(NOTE THE !! signs before result)
  def check_if_user_profile_is_complete
    !!User.includes( :profile_pictures,:address,:contact_detail).where("user.id = ?",self)
  end

그래서, 같은 메소드는 이제 다른 것 대신에 boolean을 반환 할 것입니다. :)

오류 처리 - 정의되지 않은 메서드`where 'for #

때때로 우리는 ActiveRecord::Relation 이 아닌 반환 된 레코드 컬렉션에 where 쿼리를 사용하려고합니다 .Heause는 Where 절이 ActiveRecord 있고 Array 아니라는 것을 알고 있으므로 위의 오류가 발생합니다.

Joins 을 사용하여이를위한 정확한 솔루션이 있습니다.

: -

id = 10 인 사용자 (User)가 아닌 모든 사용자 프로필 (UserProfile)을 찾아야한다고 가정합니다.

UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).map(&:user).where.not(:id=>10)

후 그래서 위의 쿼리가 실패합니다 mapmap 반환 array 작동하지 않습니다 where 절을.

하지만 조인을 사용하면 효과가 있습니다.

UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).joins(:user).where.not(:id=>10)

joinsmap 과 같은 유사한 레코드를 출력하지만, Array 아닌 ActiveRecord 가됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow