いつも大変お世話になっております。
こちらの
【Ruby on Rails】関連モデルの最新行を取得したい
で教えていただき、直接のアソシエーション先の情報を持って来れました。
更に、その先までアソシエーションがある場合は、どのようにすれば取得出来ますでしょうか?
社員マスタの取得時に所属名(部門名+課名+グループ名)、
つまり紐づくそれぞれの名称も取得したいです。
所属モデルは、部id、課id、グループidのみを持っています。
以下が取得したいイメージですが、
社員名|所属部署|
田中|営業部第1課新宿グループ
斎藤|営業部第2課新橋グループ
現在は、以下のようにキーまでしか取得できてません。
社員名|所属部署|
田中|2,1,1
斎藤|2,2,2
所属モデル上にて部、課、グループをhas_manyし、
社員モデル上にて部の名称、課の名称、グループ名を取得するよう記述しましたが
ビューにて以下だとNoMethodError になりました。
ruby
1<%= employee.emp_group.dep_name %>
このような時はどういう方法になりますでしょうか?
どうぞ宜しくお願い致します。
社員モデル
ruby
1class Employee < ApplicationRecord 2 3 #所属マスタ 4 has_one :emp_group ,->{order 'start_date desc'},class_name: 'EmpGroup' 5 delegate :start_date,:dep_name,:sec_name,:grp_name,to: :emp_group,prefix: true 6 7 8end
所属モデル
ruby
1class EmpGroup < ApplicationRecord 2 3 #社員マスタとアソシエーション 4 belongs_to :employee 5 6 #部、課、グループとアソシエーション 7 has_many :department 8 has_many :section 9 has_many :group 10 11end 12 13
部門モデル
ruby
1class Department < ApplicationRecord 2 3 has_many :section 4 5 has_many :group 6 7 # 使用中のデータのみ返す 8 scope :using,->{where(dep_use: true)} 9 10end 11
課モデル
ruby
1class Section < ApplicationRecord 2 3 4 # 部門と紐づけ 5 belongs_to :department 6 7 has_many :group 8 9 # 使用中のデータのみ返す 10 scope :using,->{where(sec_use: true)} 11 12 13 14end 15 16
グループモデル
ruby
1class Group < ApplicationRecord 2 3 4 # 部門と紐づけ 5 belongs_to :department 6 7 # 課と紐づけ 8 belongs_to :section 9 10 # 使用中のデータのみ返す 11 scope :using,->{where(grp_use: true)} 12 13 14 15end 16 17 18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/09 05:40
2017/05/09 06:02 編集
2017/05/09 06:01
2017/05/09 06:16 編集
2017/05/09 06:29
2017/05/09 06:32
2017/05/09 06:32
2017/05/09 06:44 編集
2017/05/09 06:47
2017/05/09 07:02
2017/05/09 07:36
2017/05/09 08:02 編集
2017/05/10 00:07