【发布时间】:2015-01-21 19:46:56
【问题描述】:
我有两个型号Quote 和QuoteVersion。 Quote有很多QuoteVersions,QuoteVersion属于Quote,Quote属于QuoteVersion,因为我希望能够通过调用current_version得到current_version,然后算法得到所有版本通过调用quote.quote_versions。这是好设计吗?我发现使用quote.quote_versions.last 查找 current_version 很脏。想法?
我需要创建一个查询以仅获取当前版本,我知道我可以使用以下方法来做到这一点:
Quote.joins(:quote_versions).where("quote_versions.id = quotes.quote_version_id")
,但是有更清洁的方法吗?我需要包括其他几个条件,例如:
Quote.joins(:quote_versions).where("quote_versions.id = quotes.quote_version_id").where(quote_versions: { approver_id: nil, approved: nil })
我认为能够做这样的事情会更干净:
Quote.joins(:quote_versions).where(quote_versions: { id: :quote_version_id, approver_id: nil, approved: nil }),里面包含了hash格式的所有条件,只是不知道怎么在Quote模型上指定join列,或者是否可以。
提前致谢。
【问题讨论】:
标签: mysql ruby-on-rails join activerecord