ad_item.rb 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. # encoding: utf-8
  2. class AdItem < ActiveRecord::Base
  3. has_paper_trail
  4. self.table_name = "ad_items"
  5. belongs_to :ad_position
  6. after_destroy :after_destroy
  7. validates :ad_position_id, :name, :img, presence: true
  8. attr_accessor :v_img
  9. IMG_STORE_PATH = "ad_item"
  10. URL_TYPE_ENUM = [["内部链接",0],["外部链接",1]]
  11. rails_admin do
  12. navigation_label '广告渠道管理'
  13. weight -500
  14. parent AdPosition
  15. list do
  16. filters [:ad_position,:name, :state,:expired_at]
  17. field :id
  18. field :ad_position
  19. field :name
  20. field :img do
  21. formatted_value do
  22. bindings[:view].tag(:img, {:src => bindings[:object].get_img,
  23. :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px;',
  24. :onClick => "javascript:window.open('#{bindings[:object].get_img}')"})
  25. end
  26. end
  27. field :click_url
  28. field :url
  29. field :url_type, :enum do
  30. enum do
  31. URL_TYPE_ENUM
  32. end
  33. end
  34. field :click_times
  35. field :show_times
  36. field :expired_at
  37. field :state
  38. field :sort
  39. field :created_at
  40. field :updated_at
  41. end
  42. render "rails_admin/cash_balance/refuse_takecash"
  43. show do
  44. field :id
  45. field :ad_position
  46. field :name
  47. field :img do
  48. formatted_value do
  49. bindings[:view].tag(:img, {:src => bindings[:object].get_img,
  50. :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px;',
  51. :onClick => "javascript:window.open('#{bindings[:object].get_img}')"})
  52. end
  53. end
  54. field :click_url
  55. field :url
  56. field :url_type, :enum do
  57. enum do
  58. URL_TYPE_ENUM
  59. end
  60. end
  61. field :click_times
  62. field :show_times
  63. field :expired_at
  64. field :state
  65. field :sort
  66. field :created_at
  67. field :updated_at
  68. end
  69. edit do
  70. field :ad_position
  71. field :name
  72. field :v_img, :file_upload do
  73. pretty_value do
  74. bindings[:view].tag(:img, {:src => bindings[:object].get_img, :class => 'preview'})
  75. end
  76. end
  77. field :click_url
  78. field :url
  79. field :url_type, :enum do
  80. enum do
  81. URL_TYPE_ENUM
  82. end
  83. end
  84. field :expired_at
  85. field :state
  86. field :sort
  87. end
  88. end
  89. def v_img=file
  90. unless file.blank?
  91. clear_img
  92. file_name = "#{UUID.new.generate[0...8].downcase}.jpg"
  93. file_path = "#{IMG_STORE_PATH}/#{file_name}"
  94. Ali::Oss.store(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path, file.read)
  95. self.img = file_path
  96. self.save
  97. end
  98. end
  99. def clear_img
  100. file_path = "#{self.img}"
  101. Ali::Oss.delete_object(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path)
  102. end
  103. def get_img
  104. url = "http://#{Ali::Oss::CDN_URL_FOR_HOST}/#{self.img}"
  105. return url
  106. end
  107. def after_destroy
  108. clear_img
  109. end
  110. end