Ruby on Rails
Rails 요리 책 - 고급 레일 조리법 / 학습 및 코딩 기술
수색…
레일 콘솔을 사용하여 테이블로 재생하기
표보기
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')
여기서 country
는 users
파일에 이미 색인 이 추가 된 마이그레이션 파일의 열 이름입니다.
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)
후 그래서 위의 쿼리가 실패합니다 map
로 map
반환 array
작동하지 않습니다 where
절을.
하지만 조인을 사용하면 효과가 있습니다.
UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).joins(:user).where.not(:id=>10)
joins
은 map
과 같은 유사한 레코드를 출력하지만, Array
아닌 ActiveRecord
가됩니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow