我有一个每个资产都有一个main_image的模型,而在附件模型中,每个资产只能有一个真值。我想知道是否有办法拉出这条记录而不循环遍历每条记录,看看main_image是否设置为true或false。
澄清:
我可以使用以下代码找到该值:
<% @asset.attachments.each_with_index do |attachment, i| %>
<%= image_tag(attachment.attachment.s_640_480) if !attachment.main_image.nil? && attachment.main_image%>
<%end%>
但是,我想知道如何在没有循环的情况下做到这一点...... 我不知道如何澄清......但是像:
<%= image_tag(@attachment.where_main_image.s_640_480) %>
我知道这不起作用,但基本上就是概念
答案 0 :(得分:4)
<%= image_tag(@asset.attachments.find_by_main_image(true).attachment.s_640_480) %>
在您的视图中使用此代码并不是那么好,所以我建议将其放在资产模型的实例方法中:
class Asset < ActiveRecord::Base
has_many :attachments
def main_image
attachments.find_by_main_image(true).attachment.s_640_480
end
end
然后在您看来,您可以这样做:
<%= image_tag(@asset.main_image) %>
您可能需要添加一些对象不为零的检查。祝你好运。
答案 1 :(得分:1)
您可以这样加入:
class Asset < ActiveRecord::Base
has_many :attachments do
def main_image
where(:main_image => true).first
end
end
end
在您的观看中使用如下:
<%= image_tag @asset.attachments.main_image.s640_480 %>
答案 2 :(得分:0)
如果我明白你需要在数据库中找到一些条目,如果它的值是真还是假呢?
因此,您需要在模型中创建方法或在控制器中使用带有条件的查找,您可以在the documentation内找到所需的所有内容。