如何为ActiveRecord关联提供默认值?
例如,我有一个应用程序,其中Attachment
是一个多态模型,用于存储任何其他模型的二进制数据。它有一个mime_type
字段。
对于某些协会,mime_type
显而易见。例如,
class Invoice < ActiveRecord::Base
has_one :pdf, # clearly this will be application/pdf
class_name: "Attachment",
as: :attached_to,
dependent: :destroy
end
说invoice.build_pdf(mime_type: "application/pdf")
是重复的。这应该是我mime_type
(或invoice.build_pdf
等)时的默认.create_pdf!
。
我该如何做到这一点?
答案 0 :(得分:2)
一种方法是在协会中添加范围。
class Invoice < ActiveRecord::Base
has_one :pdf,
-> { where(mime_type: "application/pdf") }, # here
class_name: "Attachment",
as: :attached_to,
dependent: :destroy
end
这将在查询和构建时使用。