まず、式はあっています。しかし
厳密には、debugの表示段階では日付は取得できていません
以下理屈を説明します。
ActiveRecord_Relationは
SQLを生成するのに必要な情報を持っておくclassです。
Modelにallをするかjoinsとかwhereとかorderを繋げるとActiveRecord_Relationになります。
これに、さらにjoinsとかwhereとかorderを繋げる事ができ、
Railsがここだ!というタイミングにArelというライブラリを使いSQLに変換し実行します。
DBの情報はこの時に取得されます。
そもそも、モデル層
普通逆なんじゃないかなーと思います。
まあ、一人の社員が複数の所属になるのなら話は違いますが…。
社員マスタ(employee)
id
name
emp_group_id#現在の所属のID
所属マスタ(emp_group)
id
group_name
所属履歴(emp_group_log)
id
employee_id
emp_group_id
emp_group_name#所属の部署?名がしょっちゅう変わる場合とか
start_date
とやるのがいいのではないのでしょうか?
モデル(社員)上で定義しておくべきかと思うのですが、どうでしょうか?
その発想、素晴らしいです。
そういった場合has_oneとdelegate(委譲)を使って
例えば社員modelに
ruby
1has_one :org_group ,->{order 'start_date desc'},class_name: 'EmpGroupLog'
2delegate :start_date,:emp_group_name,to: :org_group,prefix: true
とかやると
ruby
1Employee.first.org_group_start_date
2Employee.first.org_group_emp_group_name
で取得できます。
で、railsはこのdeligateをよく使うので
groupがダブりまくってうざいので本当は
ruby
1#所属マスタ(emp_group)
2id
3name
4#所属履歴(emp_group_log)
5id
6employee_id
7emp_group_id
8name#所属の部署?名がしょっちゅう変わる場合とか
9start_date
みたいに、極力シンプルなnameにする方がいいと思います。
VBとかだと逆に習いますが...
DRYじゃないですよね
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/08 05:17
2017/05/08 06:10 編集
2017/05/08 06:19
2017/05/09 02:58
2017/05/09 03:02
2017/05/09 03:26
2017/05/09 04:15 編集
2017/05/09 05:37