サーチ…


レールコンソールを使用してテーブルで再生する


テーブルの表示

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メソッド - ブール値を返す

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

だから、同じメソッドは、何かの代わりにブール値を返します:)。

エラーの処理 - 未定義のメソッド `where 'for#

時には、 ActiveRecord::Relationではない返されたレコードのコレクションに対してwhereクエリを使用することwhereます.Heauseは、 Where句がActiveRecordではなくArrayことを知っています。

これは、 Joinsを使用して正確な解決策があります。

: -

id = 10のユーザ(User)ではないアクティブなすべてのユーザプロファイル(UserProfile)を見つける必要があるとします。

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

したがって、上記のクエリは、 mapwhere句で動作しない arrayを返すので、 map後に失敗しmap

しかし、結合を使用して、それを動作させる、

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

joinsmapような類似のレコードを出力しmapが、 Arrayはなく ActiveRecordなります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow