我想从用户事件EventView.promoter_id = User.id,但它不能正常工作。这里是我的设置(目前不正确的):has_many通过与不同的外键
User
has_many :events
has_many :promoted_event_views, :foreign_key => :promoter_id, :class_name => "EventView"
has_many :promoted_events, :through => :event_views, :foreign_key => :promoter_id #foreign key seems to be getting ignored
EventView
belongs_to :event
belongs_to :promoted_event, :class_name => "Event", :foreign_key => :event_id
belongs_to :promoter, :foreign_key => :promoter_id, :class_name => "User"
数据库被设置为:
User
id
..etc (irrelevant)
Event
id
user_id
...etc (irrelevant)
EventView
id
user_id
event_id
promoter_id
...etc (irrelevant)
我试图拨打:
User.all.first.promoted_events
它的工作原理,但它给我错误的信息!它不涉及对EventViews(我想)的promoter_id,而是它使用USER_ID在活动
这里发生了什么数据库:
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
这是很清楚的。 user_id
= 1正在导致这个问题,我该如何将其更改为promoter_id = 1?我已经尝试在用户模型中设置primary_key和foreign_key,但它似乎被忽略。
ALSO:我尝试使用finder_sql但它在Rails的弃用4
我看到'belongs_to的:promoted_event,...:foreign_key =>:event_id',但我没有看到一个'event_id'列任何地方。你确定这是你的意图吗? –
对不起,只是编辑将它包含在事件视图 – Rob
我不知道它是否与问题有关,但在你的'EventView'中,你为':event'指定了相同的外键(隐式地是'event_id' )和':promoter_event'(显式为'event_id')。 –