如果属性为nil,则为ActiveRecord默认值

鲤鱼

如果尚未设置属性或已删除属性,则寻找一种更干净的方法来设置默认值,并返回nil。

class Category < ActiveRecord::Base
  has_and_belongs_to_many :restaurants
  belongs_to :picture

  def set_picture
    if self.picture.nil?
      Picture.default_pic
    else
      self.picture
    end
  end
end

class Picture < ActiveRecord::Base
  belongs_to :review

  def self.default_pic
    Picture.new(url: "/assets/default.jpg")
  end
end

# index.html.erb
<%= image_tag category.set_picture.url %>

类别中有很多餐厅,而餐厅有很多评论。评论有一对一的图片。应该允许类别从其关联的图片之一中进行选择,或者默认为素材资源文件夹中的图片。

#set_picture需要重构。希望对某种类型的回调:

class Category < ActiveRecord::Base
  belongs_to :picture, defaults_to: Picture.default_pic
end

是否有上述回调?我可以创建一个吗?还是我的框架错了?

凯尔·德科特(Kyle Decot)

我认为您可以覆盖访问器并调用super。如果返回nil,则可以返回默认图片:

class Category < ActiveRecord::Base
  belongs_to :picture

  def picture
    super || Picture.default_pic
  end 
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果输入字段为空,则为默认值

来自分类Dev

Jade变量插值-如果未定义属性,则为默认值?

来自分类Dev

Jade变量插值-如果未定义属性,则为默认值?

来自分类Dev

如果为null,则替换为0,否则为同一列中的默认值

来自分类Dev

清除输入,模糊时显示文本区域,如果该字段为空,则为默认值

来自分类Dev

如果属性在json中为null,则给属性提供默认值

来自分类Dev

如果属性值为空,则使用骨干模型默认值

来自分类Dev

函数参数的默认值,其中传入的值为nil

来自分类Dev

如果“计划的注释”使用的属性为空,则使用默认值

来自分类Dev

WPF-如果视图模型中的属性为null,则使用样式的默认值

来自分类Dev

ActiveRecord不保存任何属性,保存默认值

来自分类Dev

ActiveRecord不保存任何属性,保存默认值

来自分类Dev

如果玩家还没有宝石,则为默认值

来自分类Dev

Codeigniter:如果未从控制器返回数据,则为文本输入字段的默认值

来自分类Dev

节点; 如果可读流抛出错误,则为默认值

来自分类Dev

Ruby Hash初始化(默认值为nil)

来自分类Dev

如果列值为NULL,如何实现默认值?

来自分类Dev

如果Command值为null,如何设置默认值

来自分类Dev

如果路径值为空,则设置默认值

来自分类Dev

如果列值为NULL,如何实现默认值?

来自分类Dev

如果 API 值为空,则显示默认值

来自分类Dev

值对象属性应配置为默认值吗?

来自分类Dev

类属性的默认值(如果未分配)

来自分类Dev

如果默认值,Aspnetcore Web API将抑制属性

来自分类Dev

对象属性中的默认值(如果不存在)

来自分类常见问题

如果env var为空,如何分配默认值?

来自分类Dev

如果字符串为空,则使用默认值

来自分类Dev

Python:如果默认值为3.4,如何访问3.3?

来自分类Dev

如果变量为空,则设置默认值

Related 相关文章

  1. 1

    如果输入字段为空,则为默认值

  2. 2

    Jade变量插值-如果未定义属性,则为默认值?

  3. 3

    Jade变量插值-如果未定义属性,则为默认值?

  4. 4

    如果为null,则替换为0,否则为同一列中的默认值

  5. 5

    清除输入,模糊时显示文本区域,如果该字段为空,则为默认值

  6. 6

    如果属性在json中为null,则给属性提供默认值

  7. 7

    如果属性值为空,则使用骨干模型默认值

  8. 8

    函数参数的默认值,其中传入的值为nil

  9. 9

    如果“计划的注释”使用的属性为空,则使用默认值

  10. 10

    WPF-如果视图模型中的属性为null,则使用样式的默认值

  11. 11

    ActiveRecord不保存任何属性,保存默认值

  12. 12

    ActiveRecord不保存任何属性,保存默认值

  13. 13

    如果玩家还没有宝石,则为默认值

  14. 14

    Codeigniter:如果未从控制器返回数据,则为文本输入字段的默认值

  15. 15

    节点; 如果可读流抛出错误,则为默认值

  16. 16

    Ruby Hash初始化(默认值为nil)

  17. 17

    如果列值为NULL,如何实现默认值?

  18. 18

    如果Command值为null,如何设置默认值

  19. 19

    如果路径值为空,则设置默认值

  20. 20

    如果列值为NULL,如何实现默认值?

  21. 21

    如果 API 值为空,则显示默认值

  22. 22

    值对象属性应配置为默认值吗?

  23. 23

    类属性的默认值(如果未分配)

  24. 24

    如果默认值,Aspnetcore Web API将抑制属性

  25. 25

    对象属性中的默认值(如果不存在)

  26. 26

    如果env var为空,如何分配默认值?

  27. 27

    如果字符串为空,则使用默认值

  28. 28

    Python:如果默认值为3.4,如何访问3.3?

  29. 29

    如果变量为空,则设置默认值

热门标签

归档