このイベントメソッドを再集計して簡略化できますか?Rails 3でactiverecordメソッドをリファクタリングする
class Manager < User
has_and_belongs_to_many :customers
def events
Event.joins(:customers => :managers).where(:users => { :id => self }).select("DISTINCT(events.id), events.description, events.created_at")
end
end
私が現在持っているマネージャーインスタンスの上にクエリを構築することができましたが、これはできないようです。私は次のことを試してみましたが、エラーに
def events
customers.joins(:events).select("DISTINCT(events.id), events.description, events.created_at")
end
と
current_user.events
を得たが、これはMySQLのエラーが発生:
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT(events.id), events.description, events.created_at FROM `customers` INNER' at line 1: SELECT `customers`.*, DISTINCT(events.id), events.description, events.created_at FROM `customers` INNER JOIN `customers_events` ON `customers_events`.`customer_id` = `customers`.`id` INNER JOIN `events` ON `events`.`id` = `customers_events`.`event_id` INNER JOIN `customers_managers` ON `customers`.`id` = `customers_managers`.`customer_id` WHERE `customers_managers`.`manager_id` = 27 ORDER BY created_at DESC
を使用することができ、しかし
:これを試してみてください少なくともエラーが何であるか、あなたが達成しようとしていることを言うことができます。 – sevenseacat
Karpie - 更新された質問。 – pingu