ruby-on-rails - has_many 条件或 proc 外键

标签 ruby-on-rails ruby-on-rails-3 associations has-many has-one

我在两个模型之间有一个 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/

相关文章:

ruby-on-rails - Redis 和 Sidekiq 在 Ubuntu 16.04 上的生产环境中使用 systemd 和 Capistrano 部署

ruby-on-rails - Rails 中相同的命名空间但不同的 Controller 和 View

ruby-on-rails - Rails 供应商 Assets 未提供服务.. 未找到路由错误

ruby-on-rails-3 - 在html View 中呈现JBuilder View

ruby-on-rails - 如何使用 accepts_nested_attributes_for 在 Rails ActiveRecord 中创建、关联和取消关联相关记录

java简单关联

cakephp - 嵌套数据上的 saveAll()

ruby-on-rails - 如何在不实际保存更改的情况下完成 update_attributes

ruby-on-rails - 如何在我的 ConnectionAdapter 回调中使用 Devise 方法?

ruby-on-rails - ruby on rails 闪存消息 - :alert :error :notice and :success?