facebook twitter hatena line email

「Ruby/rails/db関連付け」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(1:n関連のデータ取得例)
行31: 行31:
 
  battles.each do |battle|
 
  battles.each do |battle|
 
   logger.debug("battle.user.name=#{battle.user.name}")
 
   logger.debug("battle.user.name=#{battle.user.name}")
 +
end
 +
 +
==1:1関連のデータ取得例==
 +
class Supplier < ApplicationRecord
 +
  has_one :account
 +
end
 +
class Account < ApplicationRecord
 +
end
 +
 +
acounts = Account.all
 +
acounts.each do |account|
 +
  logger.debug("account.supplier.name=#{account.supplier.name}")
 
  end
 
  end
  
 
==参考==
 
==参考==
 
公式rails関連付け:https://railsguides.jp/association_basics.html
 
公式rails関連付け:https://railsguides.jp/association_basics.html

2017年11月17日 (金) 07:16時点における版

関連付け一覧

belongs_to
has_one
has_many
has_many :through
has_one :through
has_and_belongs_to_many

belongs_to関連付けオプション

:autosave
:class_name
:counter_cache
:dependent
:foreign_key
:primary_key
:inverse_of
:polymorphic
:touch
:validate
:optional

1:n関連のデータ取得例

class Battle < ApplicationRecord
  belongs_to :user
end
class User < ApplicationRecord
  has_many :battle
end
battles = Battle.where("user_id = ?", params[:id])
battles.each do |battle|
  logger.debug("battle.user.name=#{battle.user.name}")
end

1:1関連のデータ取得例

class Supplier < ApplicationRecord
  has_one :account
end
class Account < ApplicationRecord
end
acounts = Account.all
acounts.each do |account|
  logger.debug("account.supplier.name=#{account.supplier.name}")
end

参考

公式rails関連付け:https://railsguides.jp/association_basics.html