我在两个模型之间有一个 has_many 关联,使用日期作为每个模型的外键和主键。
它以一种方式完美运行,但以另一种方式运行不佳。
作品
has_one :quiz_log, :primary_key => :start_at, :foreign_key => :start_at
没用
has_many :event_logs, :primary_key => :start_at, :foreign_key => :start_at
原因是(我认为)因为 QuizLog 上的 start_at 是一个date
,而 EventLog 上的 start_at 是一个datetime
。所以它返回 nil 试图匹配一个简单日期的确切日期时间。
我如何在第二条语句上转换 foreign_key start_at 以首先将其从 datetime 转换为简单的 date 以便它匹配第二个模型?
最佳答案
我不确定你是否可以在不使用 finder_SQL 的情况下做到这一点,但这应该可行。
has_many :event_logs, :finder_sql => proc {
"SELECT * FROM event_logs WHERE DATE(event_logs.start_at) = '#{start_at}'"
}
关于ruby-on-rails - has_many 条件或 proc 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17436829/