Note that there are some explanatory texts on larger screens.

plurals
  1. POhas_many through with different foreign key
    primarykey
    data
    text
    <p>I'm trying to get Events from the User where EventView.promoter_id = User.id but it's not working properly. Here is my setup (currently incorrect):</p> <pre><code>User has_many :events has_many :promoted_event_views, :foreign_key =&gt; :promoter_id, :class_name =&gt; "EventView" has_many :promoted_events, :through =&gt; :event_views, :foreign_key =&gt; :promoter_id #foreign key seems to be getting ignored EventView belongs_to :event belongs_to :promoted_event, :class_name =&gt; "Event", :foreign_key =&gt; :event_id belongs_to :promoter, :foreign_key =&gt; :promoter_id, :class_name =&gt; "User" </code></pre> <p>The database is set up as:</p> <pre><code>User id ..etc (irrelevant) Event id user_id ...etc (irrelevant) EventView id user_id event_id promoter_id ...etc (irrelevant) </code></pre> <p>I'm trying to call:</p> <pre><code>User.all.first.promoted_events </code></pre> <p>It works, but it gives me the wrong information! It's not relating to the promoter_id on EventViews (what I want), but instead it's using user_id on Events </p> <p>Here's what's happening in the database:</p> <pre><code>User Load (0.2ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1 Event Load (2.1ms) SELECT `events`.* FROM `events` INNER JOIN `event_views` ON `events`.`id` = `event_views`.`event_id` INNER JOIN `events` `events_promoted_events_join` ON `event_views`.`event_id` = `events_promoted_events_join`.`id` WHERE `events_promoted_events_join`.`user_id` = 1 </code></pre> <p>It's pretty clear that the .<code>user_id</code> = 1 is causing the problem, how can I change this to promoter_id = 1? I've already tried setting primary_key and foreign_key on in the user model but it seems to be getting ignored.</p> <p>ALSO: I tried using finder_sql but it's deprecated in Rails 4</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload